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!