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.
applycan 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*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-shiftaccepts only fixnums as offset argument.