## Outdated CHICKEN release

This is a manual page for an old and unsupported version of CHICKEN. If you are still using it, please consider migrating to the latest version. You can find the manual for the latest release here.

## Deviations from the standard

Identifiers are by default case-sensitive (see Compiler command line format).

[4.1.3] The maximal number of arguments that may be passed to a compiled procedure or macro is 120. A macro-definition that has a single rest-parameter can have any number of arguments.

[4.2.2] `letrec` does evaluate the initial values for the bound variables sequentially and not in parallel, that is:

(letrec ((x 1) (y 2)) (cons x y))

is equivalent to

(let ((x (void)) (y (void))) (set! x 1) (set! y 2) (cons x y) )

where R5RS requires

(let ((x (void)) (y (void))) (let ((tmp1 1) (tmp2 2)) (set! x tmp1) (set! y tmp2) (cons x y) ) )

[4.3] `syntax-rules` macros are not provided but available separately.

[6.1] `equal?` compares all structured data recursively, while R5RS specifies that `eqv?` is used for data other than pairs, strings and vectors.

[6.2.4] The runtime system uses the numerical string-conversion routines of the underlying C library and so does only understand standard (C-library) syntax for floating-point constants.

[6.2.5] There is no built-in support for rationals, complex numbers or extended-precision integers (bignums). The routines `complex?`, `real?` and `rational?` are identical to the standard procedure `number?`. The procedures `numerator`, `denominator`, `rationalize`, `make-rectangular` and `make-polar` are not implemented. Fixnums are limited to ±2^{30} (or ±2^{62} on 64-bit hardware). Support for extended numbers is available as a separate package, provided the GNU multiprecision library is installed.

[6.2.6] The procedure `string->number` does not obey read/write invariance on inexact numbers.

[6.4] The maximum number of values that can be passed to continuations captured using `call-with-current-continuation` is 120.

[6.5] Code evaluated in `scheme-report-environment` or `null-environment` still sees non-standard syntax.

[6.6.2] The procedure `char-ready?` always returns `#t` for terminal ports. The procedure `read` does not obey read/write invariance on inexact numbers.

[6.6.3] The procedures `write` and `display` do not obey read/write invariance to inexact numbers.

[6.6.4] The `transcript-on` and `transcript-off` procedures are not implemented.

Previous: Supported language