[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fundamental design issues (long message)
On Mon, 12 Dec 2005, Jim Blandy wrote:
>In other words, the fact that libraries may export macros requires a
>tight enough binding between one compilation and the next that the
>compiler can also silently pass whatever static information it likes
>about a library's exports to libraries that import it.
>(I think. It's late.)
The problem is, that tight a binding presents problems for truly
separate compilation. Inter-module macrology is *THE* barrier,
IMO, to truly large lispy-language systems because it makes it
necessary to have all source visible to compile any source.
I don't have a solution for scheme. The fact is that macros and
functions in scheme are different in kind, and function definitions
can allow real separate compilation (where the call is compilable
without reference to the definition) and macro definitions can't.
Changing that is possible in a lispy language, but it would require
changing the fundamental semantics of evaluation, or doing some
variation of runtime macroexpansion, or both.