include.ss: Textually Including Source
To load: (require (lib "include.ss"))
( SYNTAX
include path-spec)
Inlines the syntax in the designated file in place of the
include expression.
The path-spec can be any of the following:
a literal string that specifies a path to include (parsed according to the platform's conventions).
a path construction of the form
(, wherebuild-pathelem···1)build-pathismodule-identifier=?either to thebuild-pathexport frommzschemeor to the top-levelbuild-path, and where eachelemis a path string,up(unquoted), orsame(unquoted). Theelems are combined in the same way as for thebuild-pathfunction (see section 11.3.1 in PLT MzScheme: Language Manual) to obtain the path to include.a path construction of the form
(, wherelibfile-stringcollection-string···)libis free or refers to a top-levellibvariable. Thecollection-strings are passed tocollection-pathto obtain a directory; if nocollection-strings are supplied,"mzlib"is used. Thefile-stringis then appended to the directory usingbuild-pathto obtain the path to include.
If path-spec specifies a relative path to include, the path is
resolved relative to the source for the include expression, if
that source is a complete path string. If the source is not a
complete path string, then path-spec is resolved relative to
the current load relative directory if one is available, or to the
current directory otherwise.
The included syntax is given the lexical context of the include
expression.
( SYNTAX
include-at/relative-to context source path-spec)
Like include, except that the lexical context of context
is used for the included syntax, and a relative path-spec is
resolved with respect to the source of source. The context
and source elements are otherwise discarded by expansion.
( SYNTAX
include-at/relative-to/reader context source path-spec reader-expr)
Combines include-at/relative-to and include/reader.
( SYNTAX
include/reader path-spec reader-expr)
Like include, except that the procedure produced by the
expression reader-expr is used to read the included file,
instead of .read-syntax
The reader-expr is evaluated at expansion time in the
transformer environment. Since it serves as a replacement for
, the expression's value should be a procedure
that consumes two inputs -- a string representing the source and an
input port -- and produces a syntax object or read-syntax. The
procedure will be called repeatedly until it produces eof.eof
The syntax objects returned by the procedure should have source location information, but usually no lexical context; any lexical context in the syntax objects will be ignored.