2009/10/16 Michael Weber michaelw+alexandria@foldr.org:
I proposed phase segregation (basically because things get hairy down the line when not thinking about that from the start) based on files. However, I ALSO said that code should be wrapped in EVAL-WHEN:
Oh, OK.
So we'd have files like foo-syntax.lisp with all the macros, eval-when'ed definitions, special declarations, and foo.lisp with the normal runtime definitions?
That's a style I think would be great to push in the CL community. We could even have slightly separate builds for "my-system-syntax" and "my-system" so that you only need "my-system-syntax" to compile stuff that is linked at runtime against "my-system". That would minimize the need for recompilation.
Otherwise, how would you solve this for xcvb now?
Either 1- Plenty of EVAL-WHEN, or 2- explicit compile-time dependency with :compile-depends-on and/or :cload-depends-on.
Note that the ASDF to XCVB converter doesn't know about :compile-depends-on, only about the simpler :depends-on.
(FWIW, there are Scheme module systems which enforce phase separation; ObReference: Matthew Flatt, Composable and Compilable Macros, http://www.cs.utah.edu/plt/publications/macromod.pdf )
Yup.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] The rule is, jam to-morrow and jam yesterday, but never jam today. -- Lewis Carroll