1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
<meta name="generator" content="AsciiDoc 7.0.2" />
7
<style type="text/css">
9
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11
border: 1px solid red;
16
margin: 1em 5% 1em 5%;
20
a:visited { color: fuchsia; }
34
h1, h2, h3, h4, h5, h6 {
36
font-family: sans-serif;
43
border-bottom: 2px solid silver;
46
border-bottom: 2px solid silver;
56
border: 1px solid silver;
71
font-family: sans-serif;
78
font-family: sans-serif;
82
font-family: sans-serif;
84
border-top: 2px solid silver;
90
padding-bottom: 0.5em;
94
padding-bottom: 0.5em;
98
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
99
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
100
div.admonitionblock {
103
margin-bottom: 1.5em;
105
div.admonitionblock {
107
margin-bottom: 2.5em;
110
div.content { /* Block element content. */
114
/* Block element titles. */
115
div.title, caption.title {
116
font-family: sans-serif;
120
margin-bottom: 0.5em;
126
td div.title:first-child {
129
div.content div.title:first-child {
132
div.content + div.title {
136
div.sidebarblock > div.content {
138
border: 1px solid silver;
142
div.listingblock > div.content {
143
border: 1px solid silver;
148
div.quoteblock > div.content {
151
div.quoteblock .attribution {
155
div.admonitionblock .icon {
159
text-decoration: underline;
161
padding-right: 0.5em;
163
div.admonitionblock td.content {
165
border-left: 2px solid silver;
168
div.exampleblock > div.content {
169
border-left: 2px solid silver;
173
div.verseblock div.content {
177
div.imageblock div.content { padding-left: 0; }
178
div.imageblock img { border: 1px solid silver; }
179
span.image img { border-style: none; }
183
margin-bottom: 0.8em;
195
list-style-position: outside;
198
list-style-type: lower-alpha;
201
div.tableblock > table {
202
border-color: #527bbd;
206
font-family: sans-serif;
215
margin-bottom: 0.8em;
220
padding-right: 0.8em;
227
div#footer-badges { display: none; }
229
/* Workarounds for IE6's broken and incomplete CSS2. */
231
div.sidebar-content {
233
border: 1px solid silver;
236
div.sidebar-title, div.image-title {
237
font-family: sans-serif;
240
margin-bottom: 0.5em;
243
div.listingblock div.content {
244
border: 1px solid silver;
249
div.quoteblock-content {
253
div.exampleblock-content {
254
border-left: 2px solid silver;
258
<title>Specifications of SigScheme</title>
262
<h1>Specifications of SigScheme</h1>
265
<div class="sectionbody">
266
<h3>1.1. 64-bit data models</h3>
267
<p>Supports LL64, LLP64, LP64 and ILP64 on both storage-fatty and storage-compact.</p>
268
<h3>1.2. Addressable memory space</h3>
269
<p>Ordinary storage implementation can address any Scheme object scattered on
270
whole memory space. Both storage-fatty and storage-compact have no
271
limitation on any 32 and 64-bit data models. But it may be limited if a
272
storage implementation is designed to do so for some specific advantages,
273
as like GNU Emacs' 28-bit tagged pointer does.</p>
274
<h3>1.3. Integer range</h3>
275
<p>Current implementation only supports fixnum, and its range varies by the
276
user-selected underlying storage implementation. The range can be known via
277
R6RS (R5.91RS) compatible <tt>(fixnum-width)</tt>, <tt>(least-fixnum)</tt> and
278
<tt>(greatest-fixnum)</tt>.</p>
280
<h2>2. R5RS conformance</h2>
281
<div class="sectionbody">
282
<h3>2.1. Proper tail recursion</h3>
283
<p>Supported. But the conformance of <tt>eval</tt> procedure is uncertain. See the
284
comments of <tt>scm_p_eval()</tt> and <tt>rec-by-eval</tt> of <tt>test-tail-rec.scm</tt> for further
285
information about <tt>eval</tt>.</p>
286
<h3>2.2. Continuations</h3>
287
<p>Limited to nested use due to its setjmp/longjmp implementation. If a
288
continuation that is not an ancestor of current continuation called, all
289
continuation objects lying between the curent and the common ancestor of
290
the destination are invalidated. Calling an invalidated continuation object
293
<p>The hygienic macros are fully supported. But although the macro expansion
294
engine itself works well and can be expected as R5RS-conformant, its
295
integration into SigScheme is not fully validated yet. It is likely having a
296
problem on identifier references.</p>
297
<h3>2.4. Numbers</h3>
298
<p>SigScheme supports only the integer part of the numerical tower.</p>
299
<h4>2.4.1. Literals</h4>
300
<p>SigScheme recognizes only these limited part of numerical forms of "7.1.1
301
Lexical structure" section of R5RS. Other valid R5RS forms for numbers produce
303
<div class="listingblock">
304
<div class="content">
305
<pre><tt> <number> --> <num 2>| <num 8>
306
| <num 10>| <num 16>
308
<num R> --> <prefix R> <complex R>
309
<complex R> --> <real R>
310
<real R> --> <sign> <ureal R>
311
<ureal R> --> <uinteger R>
312
<uinteger R> --> <digit R>+ #* ;; '#' must not occur
313
<prefix R> --> <radix R>
315
<sign> --> <empty> | + | -
316
<radix 2> --> #b
317
<radix 8> --> #o
318
<radix 10> --> <empty> | #d
319
<radix 16> --> #x
320
<digit 2> --> 0 | 1
321
<digit 8> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
322
<digit 10> --> <digit>
323
<digit 16> --> <digit 10> | a | b | c | d | e | f
324
<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9</tt></pre>
326
<p>SigScheme accepts only lower case alphabets as radices as follows. But
327
hexadecimal digits can be written as either lower or upper.</p>
328
<div class="listingblock">
329
<div class="content">
330
<pre><tt> #b11 ==> 3
334
#xAb ==> 171</tt></pre>
336
<p>SigScheme uses a fixed-size buffer for number literals parsing. Due to the
337
implementation, it can accept only one optional <em>0</em> prefix for maximum-length
338
binary number literals. Two or more <em>0</em> prefixes causes an error as follows.</p>
339
<div class="listingblock">
340
<div class="content">
341
<pre><tt> ;; storage-compact on ILP32 env
343
(greatest-fixnum) ==> 2147483647
344
#b11111111000000001111111100000000 ==> 4278255360
345
#b011111111000000001111111100000000 ==> 4278255360
346
#b0011111111000000001111111100000000 ==> error
347
#b00011111111000000001111111100000000 ==> error</tt></pre>
349
<h4>2.4.2. Optional procedures</h4>
350
<p>The procedures <em>-</em> and <em>/</em> support following optional form.</p>
351
<div class="listingblock">
352
<div class="content">
353
<pre><tt> 6.2.5 Numerical operations
355
optional procedure: - z1 z2 ...
356
optional procedure: / z1 z2 ...</tt></pre>
358
<h3>2.5. Characters</h3>
359
<p>All character category-sensitive procedures and predicates (such as
360
char-upcase) work correctly only in ASCII range. i.e. Neither Unicode
361
processing specified in SRFI-75 nor other non-Unicode multibyte character
362
processing are supported in such procedures/predicates.</p>
363
<h3>2.6. Case-insensitive character comparison</h3>
364
<p>SigScheme's case-insensitive comparison conforms to the foldcase'ed
365
comparison described in SRFI-75 and SRFI-13, although R5RS does not specify
366
comparison between alphabetic and non-alphabetic char.</p>
367
<p>See the description in operations.c for further details.</p>
368
<h3>2.7. Case-sensitive identifiers</h3>
369
<p>SigScheme does distinguish letter case in indentifiers. Although case
370
insensitivity is required in R5RS as follows, it is hard to accept for the
372
<div class="listingblock">
373
<div class="content">
374
<pre><tt> 2. Lexical conventions
376
Upper and lower case forms of a letter are never distinguished except
377
within character and string constants. For example, `Foo' is the same
378
identifier as `FOO', and #x1AB is the same number as #X1ab.</tt></pre>
380
<h3>2.8. Constant string</h3>
381
<p>SigScheme treats string literals as constant as specified in R5RS.</p>
382
<div class="exampleblock">
383
<div class="title">Example: constant string</div>
384
<div class="exampleblock-content">
385
<div class="literalblock">
386
<div class="content">
387
<pre><tt>sscm> (string-set! "foo" 0 #\F)
388
Error: in string-set!: attempted to modify immutable string: "foo"</tt></pre>
390
<div class="literalblock">
391
<div class="content">
392
<pre><tt>sscm> (string-set! (string-copy "foo") 0 #\F)
396
<h3>2.9. Constant list</h3>
397
<p>SigScheme inhibits modification of constant list object by default as
398
specified in R5RS, if the storage implementation suports it. storage-fatty
399
supports it, but storage-compact does not due to no bit space for pair
401
<p>The behavior can be changed by <tt>SCM_CONST_LIST_LITERAL</tt>.</p>
402
<div class="listingblock">
403
<div class="content">
404
<pre><tt> 4.1.2 Literal expressions
406
`(quote <datum>)' may be abbreviated as '<datum>. The two notations
407
are equivalent in all respects.
410
'#(a b c) ==> #(a b c)
412
'(+ 1 2) ==> (+ 1 2)
413
'(quote a) ==> (quote a)
416
As noted in section 3.4 Storage model, it is an error to alter a
417
constant (i.e. the value of a literal expression) using a mutation
418
procedure like `set-car!' or `string-set!'.
420
6.3.2 Pairs and lists
422
procedure: set-car! pair obj
424
Stores obj in the car field of pair. The value returned by `set-car!'
427
(define (g) '(constant-list))
428
(set-car! (g) 3) ==> error</tt></pre>
430
<h3>2.10. Constant vector</h3>
431
<p>SigScheme inhibits modification of constant vector object by default as
432
specified in R5RS, if the storage implementation suports it. storage-fatty
433
supports it, but storage-compact is not yet.</p>
434
<p>The behavior can be changed by <tt>SCM_CONST_VECTOR_LITERAL</tt>.</p>
435
<div class="listingblock">
436
<div class="content">
437
<pre><tt> 6.3.6 Vectors
439
procedure: vector-set! vector k obj
441
(vector-set! '#(0 1 2) 1 "doe")
442
==> error ; constant vector</tt></pre>
444
<h3>2.11. Quote-less null list</h3>
445
<p>SigScheme allows quote-less null list by default for convenience and
446
performance. But it can be error as specified in R5RS, when <tt>SCM_STRICT_R5RS</tt>
448
<div class="exampleblock">
449
<div class="title">Example: SCM_STRICT_R5RS disabled</div>
450
<div class="exampleblock-content">
451
<div class="literalblock">
452
<div class="content">
453
<pre><tt>sscm> (null? ())
457
<div class="exampleblock">
458
<div class="title">Example: SCM_STRICT_R5RS enabled</div>
459
<div class="exampleblock-content">
460
<div class="literalblock">
461
<div class="content">
462
<pre><tt>sscm> (null? ())
463
Error: eval: () is not a valid R5RS form. use '() instead</tt></pre>
466
<h3>2.12. Quote-less vector literal</h3>
467
<p>Sigscheme inhibits quote-less vector literal by default, as specified in
469
<p>The behavior can be changed by <tt>SCM_STRICT_VECTOR_FORM</tt>.</p>
470
<div class="listingblock">
471
<div class="content">
472
<pre><tt> 6.3.6 Vectors
474
Vectors are written using the notation #(obj ...). For example, a vector
475
of length 3 containing the number zero in element 0, the list `(2 2 2 2)'
476
in element 1, and the string `"Anna"' in element 2 can be written as
479
#(0 (2 2 2 2) "Anna")
481
Note that this is the external representation of a vector, not an
482
expression evaluating to a vector. Like list constants, vector constants
485
'#(0 (2 2 2 2) "Anna")
486
==> #(0 (2 2 2 2) "Anna")</tt></pre>
488
<div class="exampleblock">
489
<div class="title">Example: vector literals</div>
490
<div class="exampleblock-content">
491
<div class="literalblock">
492
<div class="content">
493
<pre><tt>sscm> #(1 2 3)
494
Error: eval: #() is not a valid R5RS form. use '#() instead
499
<h3>2.13. Environment specifiers</h3>
500
<p><tt>(null-environment)</tt> and <tt>(scheme-report-environment)</tt> does not return correct
501
environemnt specified in R5RS. Current implementation returns same object
502
of <tt>(interaction-environment)</tt>.</p>
503
<h3>2.14. Internal definitions</h3>
504
<p>SigScheme strictly conforms to the <em>internal definitions</em> defined in R5RS
505
(cited below) if <tt>SCM_STRICT_DEFINE_PLACEMENT</tt> is enabled (default). It can be
506
disabled to get the syntax loosen, shrink the footprint and reduce runtime
508
<div class="listingblock">
509
<div class="content">
510
<pre><tt> 5.2.2 Internal definitions
512
Definitions may occur at the beginning of a <body> (that is, the body of a
513
lambda, let, let*, letrec, let-syntax, or letrec-syntax expression or that of
514
a definition of an appropriate form). Such definitions are known as internal
515
definitions as opposed to the top level definitions described above.</tt></pre>
517
<h3>2.15. Superfluous arguments</h3>
518
<p>Superfluous or dotted arguments are strictly rejected as an error if
519
<tt>SCM_STRICT_ARGCHECK</tt> is enabled. Otherwise ignored. Resource-sensitive
520
apprication could disable it.</p>
521
<div class="exampleblock">
522
<div class="title">Example: SCM_STRICT_ARGCHECK enabled</div>
523
<div class="exampleblock-content">
524
<div class="literalblock">
525
<div class="content">
526
<pre><tt>sscm> (car '(1 2) 3 4)
527
Error: in (function call): superfluous argument(s): (3 4)
528
sscm> (symbol? 'foo . #t)
529
Error: in (function call): improper argument list terminator: #t
531
Error: in (reduction): improper argument list terminator: 5</tt></pre>
534
<div class="exampleblock">
535
<div class="title">Example: SCM_STRICT_ARGCHECK disabled</div>
536
<div class="exampleblock-content">
537
<div class="literalblock">
538
<div class="content">
539
<pre><tt>sscm> (car '(1 2) 3 4)
541
sscm> (symbol? 'foo . #t)
547
<h3>2.16. Syntaxes/procedures not implemented</h3>
548
<p>Following R5RS syntaxes and procedures are not implemented (yet).</p>
549
<h4>2.16.1. Numbers</h4>
553
<strong>procedure:</strong> complex? obj
558
<strong>procedure:</strong> real? obj
563
<strong>procedure:</strong> rational? obj
568
<strong>procedure:</strong> exact? z
573
<strong>procedure:</strong> inexact? z
578
<strong>library procedure:</strong> gcd n1 …
583
<strong>library procedure:</strong> lcm n1 …
588
<strong>procedure:</strong> numerator q
593
<strong>procedure:</strong> denominator q
598
<strong>procedure:</strong> floor x
603
<strong>procedure:</strong> ceiling x
608
<strong>procedure:</strong> truncate x
613
<strong>procedure:</strong> round x
618
<strong>library procedure:</strong> rationalize x y
623
<strong>procedure:</strong> exp z
628
<strong>procedure:</strong> log z
633
<strong>procedure:</strong> sin z
638
<strong>procedure:</strong> cos z
643
<strong>procedure:</strong> tan z
648
<strong>procedure:</strong> asin z
653
<strong>procedure:</strong> acos z
658
<strong>procedure:</strong> atan z
663
<strong>procedure:</strong> atan y x
668
<strong>procedure:</strong> sqrt z
673
<strong>procedure:</strong> expt z1 z2
678
<strong>procedure:</strong> make-rectangular x1 x2
683
<strong>procedure:</strong> make-polar x3 x4
688
<strong>procedure:</strong> real-part z
693
<strong>procedure:</strong> imag-part z
698
<strong>procedure:</strong> magnitude z
703
<strong>procedure:</strong> angle z
708
<strong>procedure:</strong> exact->inexact z
713
<strong>procedure:</strong> inexact->exact z
717
<h4>2.16.2. Promises</h4>
721
<strong>library syntax:</strong> delay <expression>
726
<strong>library procedure:</strong> force promise
730
<h4>2.16.3. System interface</h4>
734
<strong>optional procedure:</strong> transcript-on filename
739
<strong>optional procedure:</strong> transcript-off
744
<h2>3. SRFI conformance</h2>
745
<div class="sectionbody">
746
<h3>3.1. SRFI-1 List Library</h3>
747
<p>Although a C implementation <tt>module-srfi1.c</tt> is existing, it is still broken
748
and should not use for production codes. To get SRFI-1 working with SigScheme,
749
use SLIB version of the library (will be made available after some
751
<h3>3.2. SRFI-22 Running Scheme Scripts on Unix</h3>
752
<p>SigScheme only supports the prelude line interpretation. All options written in
753
the line are applied as same as commandline invocation of sscm. But the <tt>main</tt>
754
procedure invocation is not supported (yet).</p>
755
<div class="exampleblock">
756
<div class="title">Example: Prelude line is interpreted as follows</div>
757
<div class="exampleblock-content">
758
<div class="literalblock">
759
<div class="content">
760
<pre><tt>#! /usr/bin/env sscm -C UTF-8
763
<div class="literalblock">
764
<div class="content">
765
<pre><tt>==> Character encoding for the file is changed to UTF-8 temporarily.</tt></pre>
768
<h3>3.3. SRFI-23 Error Reporting Mechanism</h3>
769
<p>If srfi-34 is provided, the <tt>error</tt> procedure throws a SigScheme-specific error
770
object in cooperate with "SRFI-34 Exception Handling for Programs". Otherwise
771
it simply calls scm_fatal_error(). Since the error objects are represented as a
772
list, be careful on catching an exception based on its type. If you want to
773
distinguish the error objects from ordinary lists, use SigScheme-specific
774
<tt>%%error-object?</tt> predicate.</p>
775
<div class="exampleblock">
776
<div class="title">Example: Error objects are also caught as a list</div>
777
<div class="exampleblock-content">
778
<div class="literalblock">
779
<div class="content">
780
<pre><tt>sscm> (guard (obj ((pair? obj) obj)) (error "reason" 1 2 3))
781
#<error "reason" 1 2 3></tt></pre>
784
<div class="exampleblock">
785
<div class="title">Example: Error object internal</div>
786
<div class="exampleblock-content">
787
<div class="literalblock">
788
<div class="content">
789
<pre><tt>sscm> (define err (guard (err (#t err)) (error "reason" 1 2 3)))
792
#<error "reason" 1 2 3>
796
(#<undef> . #<undef>)
797
sscm> (%%error-object? err)
801
<h3>3.4. SRFI-28 Basic Format Strings</h3>
802
<p>SigScheme fully supports SRFI-28. A directive-less tilde at end of a format
803
string causes an error as same as the reference implementation of SRFI-28.</p>
804
<div class="exampleblock">
805
<div class="title">Example: SigScheme</div>
806
<div class="exampleblock-content">
807
<div class="literalblock">
808
<div class="content">
809
<pre><tt>(format "~") ==> error
810
(format "a~") ==> error</tt></pre>
813
<h3>3.5. SRFI-38 External Representation for Data with Shared Structure</h3>
814
<p>Only <tt>write-with-shared-structure</tt> is implemented and
815
<tt>read-with-shared-structure</tt> is not. The optional alias <tt>write/ss</tt> described in
816
SRFI-38 is also defined. The optional <tt>optarg</tt> argument is simply ignored.</p>
817
<p>The shared index starts with #1 (not #0).</p>
818
<div class="exampleblock">
819
<div class="title">Example: Shared index starts with #1</div>
820
<div class="exampleblock-content">
821
<div class="literalblock">
822
<div class="content">
823
<pre><tt>sscm> (define lst (list 'a 'b))
825
sscm> (set-cdr! lst lst)
828
#1=(a . #1#)</tt></pre>
831
<h3>3.6. SRFI-48 Intermediate Format Strings</h3>
832
<p>SigScheme fully supports SRFI-48.</p>
833
<p>The <em>d</em> part of <em>~w,dF</em> directive is acceptable, but completely ignored on
834
output format. Since SigScheme only supports integer currently, number is
835
always formatted as integer even if the <em>d</em> part is specified.</p>
836
<div class="exampleblock">
837
<div class="title">Example: Proper behavior</div>
838
<div class="exampleblock-content">
839
<div class="literalblock">
840
<div class="content">
841
<pre><tt>(format "~3F" 3) ==> " 3"
842
(format "~3,2F" 3) ==> "3.00"</tt></pre>
845
<div class="exampleblock">
846
<div class="title">Example: SigScheme</div>
847
<div class="exampleblock-content">
848
<div class="literalblock">
849
<div class="content">
850
<pre><tt>(format "~3F" 3) ==> " 3"
851
(format "~3,2F" 3) ==> " 3"</tt></pre>
854
<p>Although the reference implementation of SRFI-48 allows directive-less tilde at
855
end of a format string, SigScheme rejects it as an error since it decreases
856
user-code portability, and is confusable due to that the behavior is different
857
to the reference implementation of SRFI-28.</p>
858
<div class="exampleblock">
859
<div class="title">Example: Reference implementation of SRFI-48</div>
860
<div class="exampleblock-content">
861
<div class="literalblock">
862
<div class="content">
863
<pre><tt>(format "~") ==> "~"
864
(format "a~") ==> "a~"</tt></pre>
867
<div class="exampleblock">
868
<div class="title">Example: SigScheme</div>
869
<div class="exampleblock-content">
870
<div class="literalblock">
871
<div class="content">
872
<pre><tt>(format "~") ==> error
873
(format "a~") ==> error</tt></pre>
876
<h3>3.7. SRFI-60 Integer as Bits</h3>
877
<p>Only following procedures are implemented.</p>
886
<strong>procedure:</strong> logand n1 …
891
<strong>procedure:</strong> bitwise-and n1 …
896
<strong>procedure:</strong> logior n1 …
901
<strong>procedure:</strong> bitwise-ior n1 …
906
<strong>procedure:</strong> logxor n1 …
911
<strong>procedure:</strong> bitwise-xor n1 …
916
<strong>procedure:</strong> lognot n
921
<strong>procedure:</strong> bitwise-not n
926
<strong>procedure:</strong> bitwise-if mask n0 n1
931
<strong>procedure:</strong> bitwise-merge mask n0 n1
936
<strong>procedure:</strong> logtest j k
941
<strong>procedure:</strong> any-bits-set? j k
947
<p>And the others listed below are not.</p>
956
<strong>procedure:</strong> logcount n
961
<strong>procedure:</strong> bit-count n
966
<strong>procedure:</strong> integer-length n
971
<strong>procedure:</strong> log2-binary-factors n
976
<strong>procedure:</strong> first-set-bit n
988
<strong>procedure:</strong> logbit? index n
993
<strong>procedure:</strong> bit-set? index n
998
<strong>procedure:</strong> copy-bit index from bit
1010
<strong>procedure:</strong> bit-field n start end
1015
<strong>procedure:</strong> copy-bit-field to from start end
1020
<strong>procedure:</strong> ash n count
1025
<strong>procedure:</strong> arithmetic-shift n count
1030
<strong>procedure:</strong> rotate-bit-field n count start end
1035
<strong>procedure:</strong> reverse-bit-field n start end
1047
<strong>procedure:</strong> integer->list k len
1052
<strong>procedure:</strong> integer->list k
1057
<strong>procedure:</strong> list->integer list
1062
<strong>procedure:</strong> booleans->integer bool1 …
1068
<h3>3.8. SRFI-75 R6RS Unicode data</h3>
1069
<p>SRFI-75 is partially implemented. But since SRFI-75 had already been obsoleted,
1070
it is not validated deeply. It will be replaced with stable R6RS implementation
1071
once the specifications have been stabilized</p>
1072
<h4>3.8.1. Current SRFI-75 status</h4>
1076
Supports Unicode character literals such as #\λ
1081
Supports #xXX, #\uXXXX and #\UXXXXXXXX literals
1086
Supports Unicode identifiers (lacks character category validation)
1091
Supports all named chars such as #\backspace, #\esc, and #\nul
1096
Quoted-symbol by vertical bar (such as '|-symbol|) is not supported
1100
<h4>3.8.2. TODOs</h4>
1104
Remove #\uXXXX and #\UXXXXXXXX literals
1109
Support variable-length #\xXX literal
1114
Support character category validation for identifiers
1119
Disable #\newline on R6RS-compatible mode
1124
Confirm symbol escape syntax (not defined in R6RS yet)
1129
<h2>4. SIOD compatibility</h2>
1130
<div class="sectionbody">
1131
<p>FIXME: describe them.</p>
1140
let and let* bindings
1145
<em>=</em> predicate
1151
<div id="footer-text">
1152
Last updated 15-Mar-2007 05:41:05 JST