20 lines
1.5 KiB
Org Mode
20 lines
1.5 KiB
Org Mode
#+title: on libraries
|
|
|
|
* libraries and the file system
|
|
|
|
R⁷RS leaves it unspecified how exactly libraries correspond to files:
|
|
|
|
#+begin_quote
|
|
Programs and libraries are typically stored in files, although in some implementations they can be entered interactively into a running Scheme system. Other paradigms are possible. Implementations which store libraries in files should document the mapping from the name of a library to its location in the file system.
|
|
#+end_quote
|
|
|
|
thus the implementation of ~define-library~ is open to much interpretation. we could possibly define libraries as first-class objects, or deal with them statically. the former case is appealing to me, as it could massively simplify interactive use.
|
|
|
|
* semantics of declaration order
|
|
|
|
mercifully, R⁷RS is similarly ambiguous when it comes to the significance of declaration order. the authors note explicitly example two equally acceptable approaches:
|
|
|
|
#+begin_quote
|
|
One possible implementation of libraries is as follows: _After all cond-expand library declarations are expanded, a new environment is constructed for the library consisting of all imported bindings._ The expressions from all begin, include and include-ci library declarations are expanded in that environment in the order in which they occur in the library. _Alternatively, cond-expand and import declarations may be processed in left to right order interspersed with the processing of other declarations_, with the environment growing as imported bindings are added to it by each import declaration.
|
|
#+end_quote
|