[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