add library implementation note
This commit is contained in:
parent
43dccb30a4
commit
c7f4d6e791
|
@ -0,0 +1,15 @@
|
|||
# How to implement `define-library`?
|
||||
|
||||
* define-library can be nested
|
||||
* expressions inside define-library are compiled and evaluated in order sequentially
|
||||
* import declarations inside define-library and on the top level are semantically the same
|
||||
* each define-library creates one syntactic-env
|
||||
* and the body is evaluated as if it's on the top level
|
||||
* so each `toplevel definitions`' results are registered to the global table
|
||||
* but their renamed symbols are known only to who imported the library.
|
||||
|
||||
## export table
|
||||
|
||||
* import syntax destructively registers renamed symbols taken from export table of the specified library to syntactic env of the library
|
||||
* export syntax registers correspoindings of original and renamed symbols to export table of the current library
|
||||
* therefore, we need some kind of `forward declaration` support, because export syntax is usually placed at the beginning of source code.
|
Loading…
Reference in New Issue