Hi!

Since Chicken lacks a built-in module system, I'm playing with the
syntax-case egg. I want to take an extension (say SRFI-39) and make
that (or parts of it) available as a syntax-case module. It seems I
have to use EXPORT-TOPLEVEL instead of the export list, since this
doesn't work:

(module foo (append!)
  (require-extension srfi-1))
===>
Error: missing definition for export(s): (append!)

This works:

(module foo ()
  (require-extension srfi-1)
  (export-toplevel append!))

So now, the question is what to do about syntax (i.e. macros). The
syntax-case egg docs mention that EXPORT-TOPLEVEL doesn't support
syntax. So how would I export a macro imported from an extension
loaded with REQUIRE-EXTENSION? This doesn't work:

(module spells.parameter (parameterize)
  (require-extension srfi-39)
  (export-toplevel make-parameter))
===>
Error: missing definition for export(s): (parameterize)

Any ideas?

Another thing that I noticed when using the syntax-case egg is that
INCLUDEs are not relative to the file containing the module
declaration, but I think they should be. So given a file
"some/dir/modules.scm":

(module foo (bar)
  (include "foo.scm"))

Now running "csi -R syntax-case some/dir/modules.scm" should look in
"some/dir" for foo.scm instead of the current directory. This is also
what happens in mzscheme when using the INCLUDE syntax.

Cheers, Rotty
-- 
Andreas Rottmann         | [EMAIL PROTECTED]      | [EMAIL PROTECTED] | [EMAIL 
PROTECTED]
http://rotty.uttx.net    | GnuPG Key: http://rotty.uttx.net/gpg.asc
Fingerprint              | C38A 39C5 16D7 B69F 33A3  6993 22C8 27F7 35A9 92E7
v2sw7MYChw5pr5OFma7u7Lw2m5g/l7Di6e6t5BSb7en6g3/5HZa2Xs6MSr1/2p7 hackerkey.com

Anonymous surfing? Use Tor: http://tor.eff.net


_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to