1 | [[tags: manual]] |
---|
2 | |
---|
3 | == Confirmed deviations |
---|
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. (However, a macro-definition |
---|
10 | that has a single rest-parameter can have any number of arguments.) |
---|
11 | Likewise, [6.4] the maximum number of values that can be passed |
---|
12 | to continuations captured using {{call-with-current-continuation}} |
---|
13 | is 120. This is an implementation restriction that is unlikely |
---|
14 | to be lifted. |
---|
15 | |
---|
16 | [6.2.5] The {{numerator}} and {{denominator}} procedures cannot be |
---|
17 | applied to inexact numbers, and the procedure {{rationalize}} is not |
---|
18 | implemented at all. This will be fixed in a later release. |
---|
19 | |
---|
20 | [6.2.4] The runtime system uses the numerical string-conversion |
---|
21 | routines of the underlying C library and so does only understand |
---|
22 | standard (C-library) syntax for floating-point constants. Consequently, |
---|
23 | the procedures [6.2.6] {{string->number}}, [6.6.2] {{read}}, |
---|
24 | [6.6.3] {{write}}, and [6.6.3] {{display}} do not obey |
---|
25 | read/write invariance to inexact numbers. |
---|
26 | |
---|
27 | [6.5] Code evaluated in {{scheme-report-environment}} or |
---|
28 | {{null-environment}} still sees non-standard syntax. |
---|
29 | |
---|
30 | == Unconfirmed deviations |
---|
31 | |
---|
32 | [6.6.2] The procedure {{char-ready?}} always returns {{#t}} for |
---|
33 | terminal ports. |
---|
34 | |
---|
35 | == Doubtful deviations |
---|
36 | |
---|
37 | [4.2.2] {{letrec}} does evaluate the initial values for the bound |
---|
38 | variables sequentially and not in parallel, that is: |
---|
39 | |
---|
40 | (letrec ((x 1) (y 2)) (cons x y)) |
---|
41 | |
---|
42 | is equivalent to |
---|
43 | |
---|
44 | (let ((x (void)) (y (void))) |
---|
45 | (set! x 1) |
---|
46 | (set! y 2) |
---|
47 | (cons x y) ) |
---|
48 | |
---|
49 | where R5RS requires |
---|
50 | |
---|
51 | (let ((x (void)) (y (void))) |
---|
52 | (let ((tmp1 1) (tmp2 2)) |
---|
53 | (set! x tmp1) |
---|
54 | (set! y tmp2) |
---|
55 | (cons x y) ) ) |
---|
56 | |
---|
57 | It is unclear whether R5RS permits this behavior or not; in any case, |
---|
58 | this only affects letrecs where the bound values are not |
---|
59 | lambda-expressions. |
---|
60 | |
---|
61 | == Non-deviations that might surprise you |
---|
62 | |
---|
63 | [6.1] {{equal?}} compares all structured data recursively, while R5RS |
---|
64 | specifies that {{eqv?}} is used for data other than pairs, strings and |
---|
65 | vectors. However, R5RS does not dictate the treatment of data types |
---|
66 | that are not specified by R5RS. |
---|
67 | |
---|
68 | [6.2.5] There is no built-in support for exact rationals, complex |
---|
69 | numbers or extended-precision integers (bignums). The routines |
---|
70 | {{complex?}}, {{real?}} and {{rational?}} are identical to |
---|
71 | the standard procedure {{number?}}. The procedures {{make-rectangular}} |
---|
72 | and {{make-polar}} are not implemented. Fixnums are limited to |
---|
73 | Â±2<nowiki><sup>30</sup></nowiki> (or Â±2<nowiki><sup>62</sup></nowiki> |
---|
74 | on 64-bit hardware). Support for the full numeric tower is available |
---|
75 | as a separate package, provided the GNU multiprecision library is installed. |
---|
76 | |
---|
77 | [6.2.6] The procedure {{string->number}} does not obey read/write |
---|
78 | invariance on inexact numbers. |
---|
79 | |
---|
80 | [6.4] The maximum number of values that can be passed to continuations |
---|
81 | captured using {{call-with-current-continuation}} is 120. |
---|
82 | |
---|
83 | [6.5] Code evaluated in {{scheme-report-environment}} or |
---|
84 | {{null-environment}} still sees non-standard syntax. |
---|
85 | |
---|
86 | [6.6.2] The procedure {{char-ready?}} always returns {{#t}} for |
---|
87 | terminal ports. The procedure {{read}} does not obey read/write |
---|
88 | invariance on inexact numbers. |
---|
89 | |
---|
90 | [6.6.3] The procedures {{write}} and {{display}} do not obey |
---|
91 | read/write invariance to inexact numbers. |
---|
92 | |
---|
93 | [6.6.4] The {{transcript-on}} and {{transcript-off}} procedures are |
---|
94 | not implemented. R5RS does not require them. |
---|
95 | |
---|
96 | --- |
---|
97 | Previous: [[Supported language]] |
---|
98 | |
---|
99 | Next: [[Extensions to the standard]] |
---|