- (set! <variable> <expression>)syntax
<Expression> is evaluated, and the resulting value is stored in the location to which <variable> is bound. <Variable> must be bound either in some region enclosing the set! expression or at top level. The result of the set! expression is unspecified.
(define x 2) (+ x 1) ===> 3 (set! x 4) ===> unspecified (+ x 1) ===> 5
As an extension to R5RS, set! for unbound toplevel variables is allowed. Also, (set! (PROCEDURE ...) ...) is supported, as CHICKEN implements SRFI-17.