[gambit-list] Dynamic version of (include ...)
Adrien Piérard
pierarda at iro.umontreal.ca
Sat Feb 14 05:49:35 EST 2009
Include is an operation on source code (it includes the text of a file in
the current one).
A function call is an operation on scheme values.
So, it's going to be hard in scheme… (CL has ways to use macros at run-time
I think)
If you know your list, you can try something like
(define-macro (load-all-files . files)
(if (null? files)
#f
`(begin
(include ,(car files))
(load-all-files ,@(cdr files)))))
but you need to call it with the list of files in the source (that is,
"(load-all-files f1 f2 f3)")
Another, dirtier way, I guess, would be to READ your files, append them to
your quoted dynamic code, and to eval it all…
P!
2009/2/14 François Magnan <francois.magnan at licef.ca>
> Hi fellow Gambitters,
>
> I have a problem trying to dynamically load scheme files that contains
> macros. I know that when a file contains a macro, the macro definition
> must be in the same file as the macro usage. If not, one must use the
> (include ....) special form to import the macro definition.
>
> I would like to be able to use (include ...) inside a function to
> programmatically include some files like (load ...) can do.
>
>
> For example, if
>
> (for-each (lambda (file)
> (include file))
> '("file1" "file2" ...))
>
> *** ERROR IN (console)@2.15 -- Filename expected
>
> could work!
>
> Is there any way to make this work without appending all the files
> together.
>
> Thank you,
> Francois Magnan
>
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
--
Français, English, 日本語, 한국어
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20090214/aecfb61c/attachment.htm>
More information about the Gambit-list
mailing list