You are looking at historical revision 42895 of this page. It may differ significantly from its current revision.
dynamic-import
Documentation
A dynamic import facility for CHICKEN Scheme.
Usage
(import dynamic-import)
Note strongly suggest warnings be disabled before using dynamic-import: (enable-warnings #f).
"Warning: imported identifier doesn't exist in module ..." can occur due to missing exported identifiers during module search. Also, warnings from dynamic-import flow thru a different channel.
dynamic-import
[syntax] (dynamic-import MODs IDs [DEF])Defines the identifiers IDs, imported from the first available module in MODs, using the default specification DEF when all modules are unproductive.
- MOD ; (or symbol (list symbol fixnum) (list-of (or symbol number)))
- ID ; (symbol)
- MODs ; (or MOD (list-of MOD)) ; single, or multiple, module specifications
- IDs ; (or ID (list-of ID)) ; single, or multiple, identifiers
- DEF
- (default * ...) ; default is the result of (list * ...)
- DEF
- procedure ; default is the result of (DEF IDs)
dynamic-import-warning
[parameter] (dynamic-import-warning [WARN]) -> procedure: WARN ; (#!rest -> void) ; warning procedure; default warning : WARN ; #t ; default : WARN ; #f ; void
Examples
(import dynamic-import) ;see note above (enable-warnings #f) ;tcp-listen ... from tcp6 else (chicken tcp) (dynamic-import (tcp6 (chicken tcp)) (tcp-listen tcp-listener-fileno tcp-listener-port tcp-accept tcp-accept-ready? tcp-close tcp-abandon-port tcp-buffer-size tcp-connect tcp-read-timeout tcp-write-timeout)) ;ssl-connect* from openssl else stub (dynamic-import openssl ssl-connect* (default (lambda _ (values #f #f))))
Bugs & Limitations
- Very not portable Scheme.
- The toplevel is polluted due to lack of lexical scope.
Notes
- Inspired by Feb 12 '22 #chicken irc discussion.
Requirements
- Test dependencies only
Author
Repository
This egg is hosted on the CHICKEN Subversion repository:
https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/dynamic-import
If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.
Version history
- 1.0.1
- Only test dependencies.
- 1.0.0
- Swap module & import arguments, support extended module-name syntax, remove dynamic-importer export.
- 0.1.0
- Removed tabulated-list-of}. Public Domain.
- 0.0.3
- Drop warning-on; see error-utils warning-on.
- 0.0.2
- Restrict import list, add warning-on.
- 0.0.1
- Initial Release.
License
This code is in the public domain.