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!
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@iro.umontreal.ca
https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list