You are looking at historical revision 14097 of this page. It may differ significantly from its current revision.

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 ±230 (or ±262 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

Next: Extensions to the standard