On Thu, Sep 6, 2012 at 1:46 PM, John Cowan <[email protected]> wrote: > Alex Shinn scripsit: > >> > Hmm. I note that cond-expand, import, and include are all in the >> > (scheme base) library, presumably because they are valid top-level >> > program parts, whereas export is not, presumably because it isn't. >> > Is that the Right Thing? If so, why? >> >> export would not even make sense outside a library definition context. > > Granted. But cond-expand and import have to work even before > any library is imported, so what sense does it make to put them in > (scheme base)?
cond-expand and include(-ci) are in (scheme base) for import by libraries, where no bindings are available by default. Only the program/repl top-level has these bindings without needing to import them. Naturally only the library declaration form of cond-expand can expand into import and other library declarations. import is in (scheme base) so you have some way to get to it if you hose your repl by binding it to something else, although you'd need some roundabout tricks with eval to do this. Personally I'd rather cond-expand and include(-ci) only be in (scheme base) and require importing to use, but we don't have grounds to revisit this. And yes, the language in the upcoming draft is not as clear as it could be, I'll review it. -- Alex _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
