[gambit-list] A question concerning load/include
Bradley Lucier
lucier at math.purdue.edu
Thu Mar 17 13:59:14 EST 2005
I seem to have trashed about a dozen recent e-mail messages, including
this one, but here's a reply:
> Are these declarations documented anywhere, I can't seem to find it in
> gambits distributed docs.
>
> >
> > See also (declare (core)) and (declare (not core)).
> >
Use The Source, Luke. Marc, these really should be documented unless
you think they're a hack and will be eliminated in the near future.
In gsc/_ptree1.scm, we find:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
;
; Declarations.
<stuff omitted>
; Compilation strategy declarations:
;
; (block) global vars defined are only mutated by code in the
current file
; (separate) global vars defined can be mutated by other code
;
; (core) toplevel expressions and definitions must be compiled to
code
; (not core) toplevel expressions and definitions belong to another
module
And see how it's used in the compiler. For example, there's
_envadt.scm, which defines Abstract Data Types for use in _env.scm, but
which are also used in other files. So in _env.scm we find
_env.scm:(include "_envadt.scm")
while in other files that use the accessors, setters, etc., defined in
_envadt.scm we find
_back.scm:(include-adt "_envadt.scm")
_env.scm:(include "_envadt.scm")
_front.scm:(include-adt "_envadt.scm")
_gvm.scm:(include-adt "_envadt.scm")
_ptree1.scm:(include-adt "_envadt.scm")
_ptree2.scm:(include-adt "_envadt.scm")
_source.scm:(include-adt "_envadt.scm")
_t-c-1.scm:(include-adt "_envadt.scm")
_t-c-2.scm:(include-adt "_envadt.scm")
_t-c-3.scm:(include-adt "_envadt.scm")
_utils.scm:(include-adt "_envadt.scm")
while include-adt is defined by
(##define-macro (include-adt filename)
`(begin
(##declare (not core))
(##include ,(string-append "../gsc/" filename))
(##declare (core))))
So the definitions in files included with "include-adt" can be inlined,
etc., in the surrounding source files, which is important for speed,
but code for these standalone accessors will be defined only in
_env.scm.
Brad
More information about the Gambit-list
mailing list