Derived expression types





`=̀13`(ndexfile(index-entry "cond" "tt" main )condclause1 clause2 … )
syntax
`=̀13`(ndexfile(index-entry "case" "tt" main )casekey clause1 clause2 … )
syntax
`=̀13`(ndexfile(index-entry "and" "tt" main )andtest1 … )
syntax
`=̀13`(ndexfile(index-entry "or" "tt" main )ortest1 … )
syntax
Identical to R4RS.





`=̀13`(ndexfile(index-entry "when" "tt" main )whentest expression1 expression2 … )
syntax
If the test expression yields a true value, the expressions are evaluated from left to right and the value of the last expression is returned.





`=̀13`(ndexfile(index-entry "unless" "tt" main )unlesstest expression1 expression2 … )
syntax
If the test expression yields a false value, the expressions are evaluated from left to right and the value of the last expression is returned.





`=̀13`(ndexfile(index-entry "let" "tt" main )letbindings body)
syntax
`=̀13`(ndexfile(index-entry "let" "tt" main )letvariable bindings body)
syntax
`=̀13`(ndexfile(index-entry "let*" "tt" main )let*bindings body)
syntax
Identical to R4RS.





`=̀13`(ndexfile(index-entry "fluid-let" "tt" main )fluid-letbindings body)
syntax
The bindings are evaluated in the current environment, in some unspecified order, the current values of the variables present in bindings are saved, and the new evaluated values are assigned to the bindings variables. Once this is done, the expressions of body are evaluated sequentially in the current environment; the value of the last expression is the result of fluid-let. Upon exit, the stored variables values are restored. An error is signalled if any of the bindings variable is unbound. $\Longrightarrow$
$\Longrightarrow$ unspecified error makeotherˆ`=̀13`


          gobblecr(let* ((a 'out)       (f (lambda () a)))  (list a         (fluid-let ((a 'in)) (f))        a)) (out in out)
When the body of a ndexfile(index-entry "fluid-let" "tt" aux )fluid-let is exited by invoking a continuation, the new variable values are saved, and the variables are set to their old values. Then, if the body is reentered by invoking a continuation, the old values are saved and new values are restored. The following example illustrates this behaviour $\Longrightarrow$
$\Longrightarrow$ unspecified error makeotherˆ`=̀13`

          gobblecr(let ((cont #f)      (l    '())      (a    'out))

(set! l (cons a l)) (fluid-let ((a 'in)) (set! cont (call/cc (lambda (k) k))) (set! l (cons a l))) (set! l (cons a l))

(if cont (cont #f) l)) (out in out in out)






`=̀13`(ndexfile(index-entry "letrec" "tt" main )letrecbindings body)
syntax
`=̀13`(ndexfile(index-entry "begin" "tt" main )beginexpression1 expression2 … )
syntax
`=̀13`(ndexfile(index-entry "do" "tt" main )doinits test body)
syntax
`=̀13`(ndexfile(index-entry "delay" "tt" main )delayexpression)
syntax
`=̀13`(ndexfile(index-entry "quasiquote" "tt" main )quasiquotetemplate)
syntax
`=̀13`template
syntax
Identical to R4RS.





`=̀13`(ndexfile(index-entry "dotimes" "tt" main )dotimes(var count) expression1 expression2 … )
syntax
`=̀13`(ndexfile(index-entry "dotimes" "tt" main )dotimes(var count result) expression1 expression2 … )
syntax

ndexfile(index-entry "Dotimes" "tt" aux )Dotimes evaluates the count form, which must return an integer. It then evaluates the expressions once for each integer from zero (inclusive) to count (exclusive), in order, with the variable var bound to the integer; if the value of count is zero or negative, then the expressions are not evaluated. When the loop completes, result is evaluated and its value is returned as the value of the ndexfile(index-entry "dotimes" "tt" aux )dotimes expression. If result is omitted, ndexfile(index-entry "dotimes" "tt" aux )dotimes returns #f.

$\Longrightarrow$
$\Longrightarrow$ unspecified error makeotherˆ`=̀13`


          gobblecr(let ((l '()))  (dotimes (i 4 l)     (set! l (cons i l)))) (3 2 1 0)





`=̀13`(ndexfile(index-entry "while" "tt" main )whiletest expression1 expression2 … )
syntax
ndexfile(index-entry "While" "tt" aux )While evaluates the expressions until test returns a false value. The value of a ndexfile(index-entry "while" "tt" aux )while construct is unspecified.





`=̀13`(ndexfile(index-entry "until" "tt" main )untiltest expression1 expression2 … )
syntax
ndexfile(index-entry "Until" "tt" aux )Until evaluates the expressions while test returns a false value. The value of an ndexfile(index-entry "unless" "tt" aux )unless construct is unspecified.