Here is an example of dependencies which arise in SLIB:
(require 'collect)
causes a macro package to be loaded (if not
already) in order to MACRO:LOAD
`collect.scm'.
common-list-functions
yasos
which causes `yasyn.scm' to be loaded.
object
and format
.
string-case
, string-port
,
rev4-optional-procedures
, and pretty-print
generic-write
We already have a conflict. Both `collect.scm' and
`comlist.scm' (common-list-functions
) define reduce
(differently). A module system should prevent such a conflict.
"comlist.scm" was loaded by the macro expander. Procedures involved in
the macro expansion should not be visible in the expanded code's name
space. This example shows that modularity is not so much about sharing
identifiers as it is about not sharing identifiers.
Go to the first, previous, next, last section, table of contents.