1 | [[tags: manual]] |
---|
2 | |
---|
3 | == Deviations from the standard |
---|
4 | |
---|
5 | Identifiers are by default case-sensitive (see |
---|
6 | [[http://galinha.ucpel.tche.br:8080/Using%20the%20compiler#Compiler%20command%20line%20format|Compiler command line format]]). |
---|
7 | |
---|
8 | [4.1.3] The maximal number of arguments that may be passed to a |
---|
9 | compiled procedure or macro is 120. A macro-definition that has a |
---|
10 | single rest-parameter can have any number of arguments. |
---|
11 | |
---|
12 | [4.2.2] {{letrec}} does evaluate the initial values for the bound |
---|
13 | variables sequentially and not in parallel, that is: |
---|
14 | |
---|
15 | (letrec ((x 1) (y 2)) (cons x y)) |
---|
16 | |
---|
17 | is equivalent to |
---|
18 | |
---|
19 | (let ((x (void)) (y (void))) |
---|
20 | (set! x 1) |
---|
21 | (set! y 2) |
---|
22 | (cons x y) ) |
---|
23 | |
---|
24 | where R5RS requires |
---|
25 | |
---|
26 | (let ((x (void)) (y (void))) |
---|
27 | (let ((tmp1 1) (tmp2 2)) |
---|
28 | (set! x tmp1) |
---|
29 | (set! y tmp2) |
---|
30 | (cons x y) ) ) |
---|
31 | |
---|
32 | [6.1] {{equal?}} compares all structured data recursively, while R5RS |
---|
33 | specifies that {{eqv?}} is used for data other than pairs, strings and |
---|
34 | vectors. |
---|
35 | |
---|
36 | [6.2.4] The runtime system uses the numerical string-conversion |
---|
37 | routines of the underlying C library and so does only understand |
---|
38 | standard (C-library) syntax for floating-point constants. |
---|
39 | |
---|
40 | [6.2.5] There is no built-in support for rationals, complex numbers or |
---|
41 | extended-precision integers (bignums). The routines {{complex?}}, |
---|
42 | {{real?}} and {{rational?}} are identical to the standard procedure |
---|
43 | {{number?}}. The procedures {{rationalize}}, {{make-rectangular}} and |
---|
44 | {{make-polar}} are not implemented. Fixnums are limited to |
---|
45 | Â±2<nowiki><sup>30</sup></nowiki> (or Â±2<nowiki><sup>62</sup></nowiki> |
---|
46 | on 64-bit hardware). Support for extended numbers is available as a |
---|
47 | separate package, provided the GNU multiprecision library is |
---|
48 | installed. |
---|
49 | |
---|
50 | [6.2.6] The procedure {{string->number}} does not obey read/write |
---|
51 | invariance on inexact numbers. |
---|
52 | |
---|
53 | [6.4] The maximum number of values that can be passed to continuations |
---|
54 | captured using {{call-with-current-continuation}} is 120. |
---|
55 | |
---|
56 | [6.5] Code evaluated in {{scheme-report-environment}} or |
---|
57 | {{null-environment}} still sees non-standard syntax. |
---|
58 | |
---|
59 | [6.6.2] The procedure {{char-ready?}} always returns {{#t}} for |
---|
60 | terminal ports. The procedure {{read}} does not obey read/write |
---|
61 | invariance on inexact numbers. |
---|
62 | |
---|
63 | [6.6.3] The procedures {{write}} and {{display}} do not obey |
---|
64 | read/write invariance to inexact numbers. |
---|
65 | |
---|
66 | [6.6.4] The {{transcript-on}} and {{transcript-off}} procedures are |
---|
67 | not implemented. |
---|
68 | |
---|
69 | --- |
---|
70 | Previous: [[Supported language]] |
---|
71 | |
---|
72 | Next: [[Extensions to the standard]] |
---|