21 Require utilities
| (require (planet untyped/unlib/require)) |
Utilities for use with require statements.
| (directory-in path) |
Expands to (combine-in (file "foo.ss") ) for all Scheme source files (".ss" and ".scm" extensions) in path. path must be a string literal.
Known issues: This form is sensitive to the value of current-directory and may not be useful in all cases. Future improvements will force path to be relative to the directory containing the current module.
| (define-library-aliases id source kw ) | ||||||||||||||||||||||||||||||||||||||||
| (define-library-aliases (in-id out-id) source kw ) | ||||||||||||||||||||||||||||||||||||||||
|
Defines require and provide shortcuts for a code library. Similar in function to Ryan Culpepper’s {Require.plt}.
The two-identifier form binds in-id and out-id to require- and provide-transformers that require and provide modules from the specified library. The single-identifier form expands to the two-identifier form by appending -in and -out to id. If the #:provide keyword is specified, provide statements are automatically injected for in-id and out-id.
dir-spec must be a string literal, which is expanded to a path using:
(path->complete-path (expand-user-path (build-path dir-spec)))
This means platform-specific shorthands such as "~" are valid in directory names. planet-spec must be a shorthand PLaneT package name. Module filenames must end with ".ss".
Examples:
| ; Define (and provide) a-in and a-out: |
| (define-library-aliases a (file "foo") #:provide) |
| (require (a-in) ; require a/main.ss |
| (a-in b c) ; require a/b.ss and a/c.ss |
| (a-in d/e)) ; require a/d/e.ss |
| ; Define (but do not provide) x-in and x-out: |
| (define-library-aliases x (planet untyped/bar:1:2)) |
| (require (x-in a)) ; require untyped/bar:1:2/a.ss |
| (provide (x-out a)) ; provide everything from untyped/bar:1:2/a.ss |