~ chicken-core (master) /manual/Deviations from the standard
Trap1[[tags: manual]]23== Confirmed deviations from R7RS45Identifiers are by default case-sensitive (see [[Using the compiler]]).67=== Number of arguments to procedures and macros89The maximal number of arguments that may be passed to a10compiled procedure or macro is limited to around 1000.11Likewise, the maximum number of values that can be passed12to continuations captured using {{call-with-current-continuation}}13is 1000. This is an implementation restriction that is unlikely14to be lifted.151617=== Numeric string-conversion considerations1819In some cases the runtime system uses the numerical string-conversion20routines of the underlying C library. Consequently, the procedures21{{string->number}}, {{read}}, {{write}}, and {{display}} do not obey22read/write invariance for inexact numbers.232425=== Environments and non-standard syntax2627In addition to the standard bindings, {{scheme-report-environment}} and28{{null-environment}} contain additional non-standard bindings for the29following syntactic forms: {{import}}, {{require-extension}},30{{require-library}}, {{begin-for-syntax}}, {{export}}, {{module}},31{{cond-expand}}, {{syntax}}, {{reexport}}, {{import-for-syntax}}.3233=== Assignment to unbound variables3435{{set!}} may assign values to unbound variables; this creates a new36top-level binding for the variable, as if {{define}} had been used37instead. This extension must be used with care, as typos might cause38unexpected results:3940<enscript highlight="scheme">41> (let ((frob 5))42 (set! frov (+ frob 1)) ; oops!43 frob)44> 545> frov46> 647</enscript>4849== Unconfirmed deviations5051=== {{char-ready?}}5253The procedure {{char-ready?}} always returns {{#t}} for54terminal ports.55565758== Doubtful deviations5960== Non-deviations that might surprise you6162=== {{let-syntax}} and {{letrec-syntax}}6364{{let-syntax}} and {{letrec-syntax}} introduce a new scope.656667=== {{equal?}} compares all structured data recursively6869{{equal?}} compares all structured data with the exception of70procedures recursively, while R7RS specifies that {{eqv?}} is used for71data other than pairs, strings and vectors. However, R7RS does not72dictate the treatment of data types that are not specified by R7RS737475---76Previous: [[Using the compiler]]7778Next: [[Extensions to the standard]]