[2.1] Identifiers may contain special characters if delimited with | ... |.
[2.3] The brackets [ ... ] are provided as an alternative syntax for ( ... ). A number of reader extensions is provided. See 5.3.
[4] Numerous non-standard macros are provided. See 5.4 for more information.
[4.2.2] It is allowed for initialization values of bindings in a letrec construct to refer to previous variables in the same set of bindings, so
(letrec ([foo 123] [bar foo] ) bar)
is allowed and returns 123. This extension is not available when strict R5RS letrec semantics have been selected (by using the -strict, -strict-srfi-0 or -strict-letrec option).
[4.2.3] (begin) is allowed in non-toplevel contexts and evaluates to an unspecified value.
[4.2.5] Delayed expressions may return multiple values.
[5.2.2] define-values may be used in internal definitions if the R5RS macro system is not used.
Chicken extends standard semantics by allowing internal definitions everywhere, and not only at the beginning of a body. A set of internal definitions is equivalent to a letrec form enclosing all following expressions in the body:
(let ([foo 123]) (bar) (define foo 456) (baz foo) )
expands into
(let ([foo 123]) (bar) (letrec ([foo 456]) (baz foo) ) )
This extension to the standard semantics is not available in combination with the hygienic (syntax-case) macro system. Under the hygienic macro system an error will be signalled when internal definitions occur at a position that is not at the beginning of a body.
[6] Chicken provides numerous non-standard procedures. See the manual sections on library units for more information.
[6.3.4] User defined character names are supported. See char-name.
[6.3.5] Chicken supports special characters preceded with a backslash ``'' in quoted string constants. ``n'' denotes the newline-character, ``r'' carriage return, ``b'' backspace, ``t'' TAB and ``xXX'' a character with the code XX in hex.
[6.4] force called with an argument that is not a promise returns that object unchanged. Captured continuations can be safely invoked inside before- and after-thunks of a dynamic-wind form and execute in the outer dynamic context of the dynamic-wind form.
[6.5] The second argument to eval is optional and defaults to the value of (interaction-environment). scheme-report-environment and null-environment accept an optional 2nd parameter: if not #f (which is the default), toplevel bindings to standard procedures are mutable and new toplevel bindings may be introduced.
[6.6.1] if the procedures current-input-port and current-output-port are called with an argument (which should be a port), then that argument is selected as the new current input- and output-port, respectively. The procedures open-input-file, open-output-file, with-input-from-file, with-output-to-file, call-with-input-file and call-with-output-file accept an optional second (or third) argument which should be one or more keywords, if supplied. These arguments specify the mode in which the file is opened. Possible values are the keywords #:text, #:binary or #:append.