Returns #t if bool1 and bool2 are both #t or
both #f, and returns #f otherwise. If either
bool1 or bool2 is not a Boolean, the
exn:application:type exception is raised.
(build-listn f) PROCEDURE
Creates a list of n elements by applying f to the integers
from 0 to n-1 in order, where n is a
non-negative integer. The ith element of the resulting list is
(f (- i 1)).
(build-stringn f) PROCEDURE
Creates a string of length n by applying f to the integers
from 0 to n-1 in order, where n is a
non-negative integer and f returns a character for the n
invocations. The ith character of the resulting string is
(f (- i 1)).
(build-vectorn f) PROCEDURE
Creates a vector of n elements by applying f to
the integers from 0 to n-1 in order,
where n is a non-negative integer. The ith element
of the resulting vector is (f (- i 1)).
(composef g) PROCEDURE
Returns a procedure that takes x and returns
(call-with-values (lambda () (gx)) f).
This form is similar to define-syntaxes, but instead of a
single body expression, a sequence of definitions follows the
sequence of defined identifiers. For each identifier, the
defns should include a definition for
identifier/proc. The value for
identifier/proc is used as the (expansion-time) value
for identifier.
The define-syntax-set form is especially useful for defining
a set of syntax transformers that share helper functions.
The evcase form is similar to case, except that expressions
are provided in each clause instead of a sequence of data. After
key-expr is evaluated, each value-expr is evaluated until
a value is found that is eqv? to the key value; when a matching
value is found, the corresponding body-exprs are evaluated and
the value(s) for the last is the result of the entire evcase
expression.
A value-expr can be the special identifier else. This
identifier is recognized as in case (see section 2.3 in PLT MzScheme: Language Manual).
false BOOLEAN
Boolean false.
(identityv) PROCEDURE
Returns v.
(let+clause body-expr ···1) SYNTAX
A new binding construct that specifies scoping on a per-binding basis
instead of a per-expression basis. It helps eliminate
rightward-drift in programs. It looks similar to let, except
each clause has an additional keyword tag before the binding
variables.
Each clause has one of the following forms:
(val targetexpr) binds target
non-recursively to expr.
(rectargetexpr) binds target recursively to
expr.
(vals (targetexpr) ···) the
targets are bound to the exprs. The environment of the
exprs is the environment active before this clause.
(recs (variableexpr) ···) the targetss are
bound to the exprs. The environment of the exprs includes
all of the targetss.
(_expr···) evaluates the exprs without
binding any variables.
The clauses bind left-to-right. Each target above can either be
an identifier or (values variable···). In the latter
case, multiple values returned by the corresponding expression are
bound to the multiple variables.
This is a binding form similar to letrec, except that each
definition is a define-values expression (after
partial macro expansion). The body-exprs are evaluated in the
lexical scope of these definitions.
(loop-untilstart done? next f) PROCEDURE
Repeatedly invokes the f procedure until the
done? procedure returns #t. The procedure is
best described by its implementation:
Returns #t if namespace-variable-value would
return a value for symbol, #f otherwise. See
section 8.2 in PLT MzScheme: Language Manual for further information.
(nandexpr ···) SYNTAX
Returns (not (andexpr···)).
(norexpr ···) SYNTAX
Returns (not (orexpr···)).
(opt-lambdaformals body-expr ···1) SYNTAX
The opt-lambda form is like lambda, except that default
values are assigned to arguments (C++-style). Default values are
defined in the formals list by replacing each variable by
[variabledefault-value-expression]. If an variable
has a default value expression, then all (non-aggregate) variables
after it must have default value expressions. A final aggregate
variable can be used as in lambda, but it cannot be given a
default value. Each default value expression is evaluated only if it
is needed. The environment of each default value expression includes
the preceding arguments.
For example:
(definef
(opt-lambda (a [b (add1a)] . c)
...))
In the example, f is a procedure which takes at least one
argument. If a second argument is specified, it is the value of
b, otherwise b is (add1a). If more than two
arguments are specified, then the extra arguments are placed in a new
list that is the value of c.
(recurname bindings body-expr ···1) SYNTAX
This is equivalent to a named let: (letnamebindingsbody-expr···1).
(recname value-expr) SYNTAX
This is equivalent to a letrec expression that returns its
binding: (letrec ((namevalue-expr)) name).
(symbol=?symbol1 symbol2) PROCEDURE
Returns #t if symbol1 and symbol2 are equivalent
(as determined by eq?), #f otherwise. If either
symbol1 or symbol2 is not a symbol, the
exn:application:type exception is raised.
(this-expression-source-directory) SYNTAX
Expands to a string that names the directory of the file containing
the source expression. The source expression's file is determined
through source location information associated with the syntax if it
is present. Otherwise, current-load-relative-directory is used
if it is not #f, and current-directory is used if all
else fails.