Next: iklib syntaxes control, Previous: iklib syntaxes defstxs, Up: iklib syntaxes [Index]
Expect ?expression to evaluate to multiple values and bind such values as specified by the ?formals; evaluate the ?body in the region of such bindings. The expansion is:
(receive ?formals ?expression ?body0 ?body …) → (call-with-values (lambda () ?expression) (lambda ?formals ?body0 ?body …))
Expect ?expression to evaluate to multiple values and bind such values to the identifiers ?retval; evaluate the ?body forms in the region of such bindings; return the values bound to ?retval. The expansion is:
(receive-and-return (?retval …) ?expression ?body0 ?body …) → (call-with-values (lambda () ?expression) (lambda (?retval …) ?body0 ?body … (values ?retval …)))
Similar to let-syntax
, expands into nested let-syntax
forms:
(let*-syntax () ?body) → (begin () ?body) (let*-syntax ((?lhs ?rhs)) ?body) → (let-syntax ((?lhs ?rhs)) ?body) (let*-syntax ((?lhs0 ?rhs0) (?lhs ?rhs) ...) ?body) → (let-syntax ((?lhs0 ?rhs0)) (let*-syntax ((?lhs ?rhs) ...) ?body))
Like let
but create immutable bindings. Attempting to mutate the
bindings with set!
will result in an expand time syntax
violation.
Like let*
but create immutable bindings. Attempting to mutate
the bindings with set!
will result in an expand time syntax
violation.
Like letrec
but create immutable bindings. Attempting to mutate
the bindings with set!
will result in an expand time syntax
violation.
Like letrec*
but create immutable bindings. Attempting to mutate
the bindings with set!
will result in an expand time syntax
violation.
Next: iklib syntaxes control, Previous: iklib syntaxes defstxs, Up: iklib syntaxes [Index]