Next: overview extensions, Previous: overview install, Up: overview [Index]
Here is a list of implementation constraints which may be non–compliant with R6RS.
(greatest-fixnum)
characters; the
length of a string and all the valid indexes into strings are
representable as fixnums.
(greatest-fixnum)
bytes; the
length of a bytevector and all the valid indexes into bytevectors are
representable as fixnums.
apply
can be a list of at most 8192
values. This is an artificially set limit to avoid problems with huge
values (it could be greater than this). As comparison: LispWorks for
Unix sets this value to 300, LispWorks for Windows and LispWorks for
Linux set this value to 255 (last verified from its online documenattion
in November, 2011).
letrec
and
letrec*
are detected at run time and cause an assertion violation to be raised.
Vicare detects them at compile–time, so some fully R6RS–compliant code will not work
under Vicare.
For example, the following program will run under a R6RS–compliant implementation:
(import (rnrs)) (letrec ((x (if (eq? (cons 1 2) (cons 1 2)) x 1))) x)
because the form x
in reference position in the right-hand side
of the binding is never evaluated; under Vicare this code will
rather raise a syntax violation at compile time.
bitwise-arithmetic-shift-left bitwise-arithmetic-shift-right
bitwise-arithmetic-shift
accepts only fixnums as
offset argument.