Expander Runtime
The following procedures are part of the expander API, accessible at phi=+1 in the core prelude.
These symbols are part of the <expander-runtime>
module, defined at
the core prelude, which you can import directly if you need to work
with the expander at phi=0, for instance in source processing tools.
Syntax Errors
raise-syntax-error
usage
(raise-syntax-error ...)
Please document me!
syntax-error?
usage
(syntax-error? ...)
Please document me!
Syntax Objects
datum->syntax
usage
(datum->syntax ...)
Please document me!
syntax->datum
usage
(syntax->datum ...)
Please document me!
syntax-e
usage
(syntax-e ...)
Please document me!
syntax->list
usage
(syntax->list ...)
Please document me!
Identifiers
identifier?
usage
(identifier? ...)
Please document me!
free-identifier=?
usage
(free-identifier=? ...)
Please document me!
bound-identifier=?
usage
(bound-identifier=? ...)
Please document me!
genident
usage
(genident ...)
Please document me!
gentemps
usage
(gentemps ...)
Please document me!
stx-identifier
usage
(stx-identifier ...)
Please document me!
identifier-list?
usage
(identifier-list? ...)
Please document me!
check-duplicate-identifiers
usage
(check-duplicate-identifiers ...)
Please document me!
underscore?
usage
(underscore? ...)
Please document me!
ellipsis?
usage
(ellipsis? ...)
Please document me!
Utilities
stx-boolean?
usage
(stx-boolean? ...)
Please document me!
stx-keyword?
usage
(stx-keyword? ...)
Please document me!
stx-char?
usage
(stx-char? ...)
Please document me!
stx-number?
usage
(stx-number? ...)
Please document me!
stx-fixnum?
usage
(stx-fixnum? ...)
Please document me!
stx-string?
usage
(stx-string? ...)
Please document me!
stx-null?
usage
(stx-null? ...)
Please document me!
stx-pair?
usage
(stx-pair? ...)
Please document me!
stx-pair/null?
usage
(stx-pair/null? ...)
Please document me!
stx-list?
usage
(stx-list? ...)
Please document me!
stx-box?
usage
(stx-box? ...)
Please document me!
stx-vector?
usage
(stx-vector? ...)
Please document me!
stx-datum?
usage
(stx-datum? ...)
Please document me!
stx-eq?
usage
(stx-eq? ...)
Please document me!
stx-eqv?
usage
(stx-eqv? ...)
Please document me!
stx-equal?
usage
(stx-equal? ...)
Please document me!
stx-false?
usage
(stx-false? ...)
Please document me!
stx-e
usage
(stx-e ...)
Please document me!
stx-source
(stx-source stx) -> locat | #f
stx := syntax
:::
Returns the source location of a syntax object AST stx
.
The locat
structure includes the container and filepos, accessed by ##locat-container
and ##locat-filepos
. The filepos has line and column information, accessed with ##filepos-line
and ##filepos-col
.
stx-wrap-source
(stx-wrap-source stx src) -> syntax
stx := any
src := locat
:::
Produces a new syntax object with source location src
if stx
is not wrapped as an AST already, otherwise returns stx
unchanged.
The locat
structure can be constructed with (##make-locat container filepos)
, where a filepos can be constructed with (##make-filepos line col off)
.
stx-car
usage
(stx-car ...)
Please document me!
stx-cdr
usage
(stx-cdr ...)
Please document me!
stx-length
usage
(stx-length ...)
Please document me!
stx-for-each
usage
(stx-for-each ...)
Please document me!
stx-map
usage
(stx-map ...)
Please document me!
stx-foldl
usage
(stx-foldl ...)
Please document me!
stx-foldr
usage
(stx-foldr ...)
Please document me!
stx-reverse
usage
(stx-reverse ...)
Please document me!
stx-last
usage
(stx-last ...)
Please document me!
stx-last-pair
usage
(stx-last-pair ...)
Please document me!
stx-list-tail
usage
(stx-list-tail ...)
Please document me!
stx-list-ref
usage
(stx-list-ref ...)
Please document me!
stx-andmap
usage
(stx-andmap ...)
Please document me!
stx-ormap
usage
(stx-ormap ...)
Please document me!
stx-plist?
usage
(stx-plist? ...)
Please document me!
stx-getq
usage
(stx-getq ...)
Please document me!
syntax-case
macro-expand-syntax
usage
(macro-expand-syntax ...)
Please document me!
macro-expand-syntax-case
usage
(macro-expand-syntax-case ...)
Please document me!
syntax-pattern?
usage
(syntax-pattern? ...)
Please document me!
syntax-local-pattern?
usage
(syntax-local-pattern? ...)
Please document me!
make-syntax-pattern
usage
(make-syntax-pattern ...)
Please document me!
syntax-pattern-id
usage
(syntax-pattern-id ...)
Please document me!
syntax-pattern-depth
usage
(syntax-pattern-depth ...)
Please document me!
syntax-check-splice-targets
usage
(syntax-check-splice-targets ...)
Please document me!
syntax-split-splice
usage
(syntax-split-splice ...)
Please document me!
Core Expander
current-expander-context
usage
(current-expander-context ...)
Please document me!
current-expander-marks
usage
(current-expander-marks ...)
Please document me!
current-expander-path
usage
(current-expander-path ...)
Please document me!
current-expander-phi
usage
(current-expander-phi ...)
Please document me!
current-module-reader-path
usage
(current-module-reader-path ...)
Please document me!
current-module-reader-args
usage
(current-module-reader-args ...)
Please document me!
local-context?
usage
(local-context? ...)
Please document me!
top-context?
usage
(top-context? ...)
Please document me!
module-context?
usage
(module-context? ...)
Please document me!
prelude-context?
usage
(prelude-context? ...)
Please document me!
expander-context-id
usage
(expander-context-id ...)
Please document me!
module-context-ns
usage
(module-context-ns ...)
Please document me!
module-context-import
usage
(module-context-import ...)
Please document me!
module-context-export
usage
(module-context-export ...)
Please document me!
module-context-code
usage
(module-context-code ...)
Please document me!
make-local-context
usage
(make-local-context ...)
Please document me!
eval-syntax
usage
(eval-syntax ...)
Please document me!
core-expand
usage
(core-expand ...)
Please document me!
core-expand-head
usage
(core-expand-head ...)
Please document me!
core-expand-expression+1
usage
(core-expand-expression+1 ...)
Please document me!
import-module
usage
(import-module ...)
Please document me!
eval-module
usage
(eval-module ...)
Please document me!
core-library-module-path?
usage
(core-library-module-path? ...)
Please document me!
core-resolve-library-module-path
usage
(core-resolve-library-module-path ...)
Please document me!
core-resolve-module-path
usage
(core-resolve-module-path ...)
Please document me!
core-quote-syntax
usage
(core-quote-syntax ...)
Please document me!
core-identifier=?
usage
(core-identifier=? ...)
Please document me!
core-identifier-key
usage
(core-identifier-key ...)
Please document me!
core-apply-expander
usage
(core-apply-expander ...)
Please document me!
syntax-local-introduce
usage
(syntax-local-introduce ...)
Please document me!
syntax-local-rewrap
usage
(syntax-local-rewrap ...)
Please document me!
syntax-local-unwrap
usage
(syntax-local-unwrap ...)
Please document me!
syntax-local-e
usage
(syntax-local-e ...)
Please document me!
syntax-local-value
usage
(syntax-local-value ...)
Please document me!
Bindings
resolve-identifier
usage
(resolve-identifier ...)
Please document me!
core-resolve-identifier
usage
(core-resolve-identifier ...)
Please document me!
binding?
usage
(binding? ...)
Please document me!
binding-id
usage
(binding-id ...)
Please document me!
runtime-binding?
usage
(runtime-binding? ...)
Please document me!
top-binding?
usage
(top-binding? ...)
Please document me!
module-binding?
usage
(module-binding? ...)
Please document me!
extern-binding?
usage
(extern-binding? ...)
Please document me!
syntax-binding?
usage
(syntax-binding? ...)
Please document me!
syntax-binding-e
usage
(syntax-binding-e ...)
Please document me!
alias-binding?
usage
(alias-binding? ...)
Please document me!
alias-binding-e
usage
(alias-binding-e ...)
Please document me!
import-binding?
usage
(import-binding? ...)
Please document me!
import-binding-e
usage
(import-binding-e ...)
Please document me!
Expanders
expander?
usage
(expander? ...)
Please document me!
expander-binding?
usage
(expander-binding? ...)
Please document me!
expander-e
usage
(expander-e ...)
Please document me!
expander-binding-e
usage
(expander-binding-e ...)
Please document me!
feature-expander?
usage
(feature-expander? ...)
Please document me!
user-expander?
usage
(user-expander? ...)
Please document me!
make-user-expander
usage
(make-user-expander ...)
Please document me!
user-expander-context
usage
(user-expander-context ...)
Please document me!
user-expander-phi
usage
(user-expander-phi ...)
Please document me!
import-expander?
usage
(import-expander? ...)
Please document me!
make-import-expander
usage
(make-import-expander ...)
Please document me!
export-expander?
usage
(export-expander? ...)
Please document me!
make-export-expander
usage
(make-export-expander ...)
Please document me!
import-export-expander?
usage
(import-export-expander? ...)
Please document me!
make-import-export-expander
usage
(make-import-export-expander ...)
Please document me!
Imports and Exports
module-import?
usage
(module-import? ...)
Please document me!
make-module-import
usage
(make-module-import ...)
Please document me!
module-import-source
usage
(module-import-source ...)
Please document me!
module-import-name
usage
(module-import-name ...)
Please document me!
module-import-phi
usage
(module-import-phi ...)
Please document me!
module-import-weak?
usage
(module-import-weak? ...)
Please document me!
module-export?
usage
(module-export? ...)
Please document me!
make-module-export
usage
(make-module-export ...)
Please document me!
module-export-context
usage
(module-export-context ...)
Please document me!
module-export-key
usage
(module-export-key ...)
Please document me!
module-export-phi
usage
(module-export-phi ...)
Please document me!
module-export-name
usage
(module-export-name ...)
Please document me!
module-export-weak?
usage
(module-export-weak? ...)
Please document me!
import-set?
usage
(import-set? ...)
Please document me!
import-set-source
usage
(import-set-source ...)
Please document me!
import-set-phi
usage
(import-set-phi ...)
Please document me!
import-set-imports
usage
(import-set-imports ...)
Please document me!
export-set?
usage
(export-set? ...)
Please document me!
export-set-source
usage
(export-set-source ...)
Please document me!
export-set-phi
usage
(export-set-phi ...)
Please document me!
export-set-exports
usage
(export-set-exports ...)
Please document me!
core-resolve-module-export
usage
(core-resolve-module-export ...)
Please document me!
core-module-export->import
usage
(core-module-export->import ...)
Please document me!
core-expand-import-source
usage
(core-expand-import-source ...)
Please document me!
core-expand-export-source
usage
(core-expand-export-source ...)
Please document me!