[R6RS] Re: strawman module syntax
R. Kent Dybvig
Thu Jul 8 10:06:10 EDT 2004
> To make a long story short: I think that module *interfaces*, not
> definitions should have globally unique meanings, and that the
> implementation for any given interface should be determined at
> compile/link time. This would mirror the way cc/ld works, and I
> think it's the way to go.
I don't understand what you mean by "compile/link" time. Do you mean to
say that compile and link time are the same? Or that implementations
can be determined at either compile or link time at the programmer's
discretion? Or that implementations are partially determined at compile
time and partially determined at link time?
In the cc/ld model, an interface (aka header file) includes whatever
the programmer likes, including macros, variable declarations, and even
function definitions. It looks like you're restricting the interface to
names, which doesn't even give the compiler a chance to expand macros.
Also, how is the implementation actually determined? Presumably, there
could be more than one module that implements the same interface or
there's not much point in separating interfaces from implementations.
>From your syntax, I take it that an application cannot contain any
top-level forms other than config forms, so top-level definitions and
commands are out. Correct?
Where does the execution of an application start?
I'm not arguing for or against any part of your proposal at this point,
just trying to understand it.
More information about the R6RS