-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathchanges.tex
174 lines (170 loc) · 8.31 KB
/
changes.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
\chapter{Language changes}
\label{languagechangesappendix}
This chapter describes most of the changes that have been made to
Scheme since the ``Revised$^5$ Report''~\cite{R5RS} was published:
\begin{itemize}
\item Scheme source code now uses the Unicode character set.
Specifically, the character set that can be used for identifiers has
been greatly expanded.
\item Identifiers can now start with the characters {\cf ->}.
\item Identifiers and symbol literals are now case-sensitive.
\item Identifiers and representations of characters, booleans,
number objects, and {\cf .} must be explicitly delimited.
\item {\cf \sharpsign} is now a delimiter.
\item Bytevector literal syntax has been added.
\item Matched square brackets can be used synonymously with parentheses.
\item The read-syntax abbreviations {\cf \sharpsign{}'} (for {\cf
syntax}), {\cf \sharpsign\backquote} (for {\cf quasisyntax}), {\cf
\sharpsign{},} (for {\cf unsyntax}), and {\cf \sharpsign{},@}
(for {\cf unsyntax-splicing} have been added; see section~\ref{abbreviationsection}.)
\item {\cf \sharpsign} can no longer be used in place of digits in number
representations.
\item The external representation of number objects can now include a
mantissa width.
\item Literals for NaNs and infinities were added.
\item String and character literals can now use a variety of escape
sequences.
\item Block and datum comments have been added.
\item The {\cf \sharpsign{}!r6rs} comment for marking report-compliant
lexical syntax has been added.
\item Characters are now specified to correspond to Unicode scalar
values.
\item Many of the procedures and syntactic forms of the language are
now part of the \rsixlibrary{base} library. Some procedures and
syntactic forms have been moved to other libraries; see figure~\ref{r5rsmovedfigure}.
\begin{figure*}[tb]
\centering
\small
\begin{tabular}[t]{ll}
identifier & moved to \\\hline
{\cf assoc} & \rsixlibrary{lists} \\
{\cf assv} & \rsixlibrary{lists} \\
{\cf assq} & \rsixlibrary{lists} \\
{\cf call-with-input-file} & \rsixlibrary{io simple} \\
{\cf call-with-output-file} & \rsixlibrary{io simple} \\
{\cf char-upcase} & \rsixlibrary{unicode} \\
{\cf char-downcase} & \rsixlibrary{unicode} \\
{\cf char-ci=?} & \rsixlibrary{unicode} \\
{\cf char-ci<?} & \rsixlibrary{unicode} \\
{\cf char-ci>?} & \rsixlibrary{unicode} \\
{\cf char-ci<=?} & \rsixlibrary{unicode} \\
{\cf char-ci>=?} & \rsixlibrary{unicode} \\
{\cf char-alphabetic?} & \rsixlibrary{unicode} \\
{\cf char-numeric?} & \rsixlibrary{unicode} \\
{\cf char-whitespace?} & \rsixlibrary{unicode} \\
{\cf char-upper-case?} & \rsixlibrary{unicode} \\
{\cf char-lower-case?} & \rsixlibrary{unicode} \\
{\cf close-input-port} & \rsixlibrary{io simple} \\
{\cf close-output-port} & \rsixlibrary{io simple} \\
{\cf current-input-port} & \rsixlibrary{io simple} \\
{\cf current-output-port} & \rsixlibrary{io simple} \\
{\cf display} & \rsixlibrary{io simple} \\
{\cf do} & \rsixlibrary{control} \\
{\cf eof-object?} & \rsixlibrary{io simple} \\
{\cf eval} & \rsixlibrary{eval} \\
{\cf delay} & \rsixlibrary{r5rs}\\
{\cf exact->inexact} & \rsixlibrary{r5rs}\\
{\cf force} & \rsixlibrary{r5rs}
\htmlonly \\ \endhtmlonly
\texonly
\end{tabular}
\qquad
\begin{tabular}[t]{ll}
identifier & moved to \\\hline
\endtexonly
{\cf inexact->exact} & \rsixlibrary{r5rs}\\
{\cf member} & \rsixlibrary{lists} \\
{\cf memv} & \rsixlibrary{lists} \\
{\cf memq} & \rsixlibrary{lists} \\
{\cf modulo} & \rsixlibrary{r5rs} \\
{\cf newline} & \rsixlibrary{io simple} \\
{\cf null-environment} & \rsixlibrary{r5rs} \\
{\cf open-input-file} & \rsixlibrary{io simple} \\
{\cf open-output-file} & \rsixlibrary{io simple} \\
{\cf peek-char} & \rsixlibrary{io simple} \\
{\cf quotient} & \rsixlibrary{r5rs} \\
{\cf read} & \rsixlibrary{io simple} \\
{\cf read-char} & \rsixlibrary{io simple} \\
{\cf remainder} & \rsixlibrary{r5rs} \\
{\cf scheme-report-environment} & \rsixlibrary{r5rs} \\
{\cf set-car!} & \rsixlibrary{mutable-pairs} \\
{\cf set-cdr!} & \rsixlibrary{mutable-pairs} \\
{\cf string-ci=?} & \rsixlibrary{unicode} \\
{\cf string-ci<?} & \rsixlibrary{unicode} \\
{\cf string-ci>?} & \rsixlibrary{unicode} \\
{\cf string-ci<=?} & \rsixlibrary{unicode} \\
{\cf string-ci>=?} & \rsixlibrary{unicode} \\
{\cf string-set!} & \rsixlibrary{mutable-strings} \\
{\cf string-fill!} & \rsixlibrary{mutable-strings} \\
{\cf with-input-from-file} & \rsixlibrary{io simple} \\
{\cf with-output-to-file} & \rsixlibrary{io simple} \\
{\cf write} & \rsixlibrary{io simple} \\
{\cf write-char} & \rsixlibrary{io simple}
\end{tabular}
\caption{Identifiers moved to libraries}
\label{r5rsmovedfigure}
\end{figure*}
\item The base language has the following new procedures and syntactic
forms: {\cf letrec*}, {\cf let-values}, {\cf let*-\hp{}values}, {\cf
real-valued?}, {\cf rational-valued?}, {\cf integer-valued?}, {\cf
exact}, {\cf inexact}, {\cf finite?}, {\cf infinite?}, {\cf nan?},
{\cf div}, {\cf mod}, {\cf
div-and-mod}, {\cf div0}, {\cf mod0}, {\cf div0-and-mod0}, {\cf
exact-integer-sqrt}, {\cf boolean=?}, {\cf symbol=?}, {\cf
string-for-each}, {\cf vector-map}, {\cf vector-\hp{}for-\hp{}each}, {\cf
error}, {\cf assertion-violation}, {\cf assert}, {\cf call/cc},
{\cf identifier-syntax}.
\item The following procedures have been removed: {\cf
char-\hp{}ready?}, {\cf transcript-on}, {\cf transcript-off},
{\cf load}.
\item The case-insensitive string comparisons ({\cf string-\hp{}ci=?}, {\cf
string-\hp{}ci<?}, {\cf string-ci>?}, {\cf string-ci<=?}, {\cf
string-ci>=?}) operate on the case-folded versions of the strings
rather than as the simple lexicographic ordering induced by the
corresponding character comparison procedures.
\item Libraries have been added to the language.
\item A number of standard libraries are described in a separate
report~\cite{R6RS-libraries}.
\item Many situations that ``were an error'' now have defined or
constrained behavior. In particular, many are now specified in
terms of the exception system.
\item The full numerical tower is now required.
\item The semantics for the transcendental functions has been
specified more fully.
\item The semantics of {\cf expt} for zero bases has been refined.
\item In {\cf syntax-rules} forms, a {\cf\_} may be used in place of
the keyword.
\item The {\cf let-syntax} and {\cf letrec-syntax} no longer introduce a
new environment for their bodies.
\item For implementations that support NaNs or infinities,
many arithmetic operations have been specified on
these values consistently with IEEE~754.
\item For implementations that support a distinct -0.0, the semantics
of many arithmetic operations with regard to -0.0 has been specified
consistently with IEEE~754.
\item Scheme's real number objects now have an exact zero as their imaginary part.
\item The specification of {\cf quasiquote} has been extended. Nested
quasiquotations work correctly now, and {\cf unquote} and {\cf
unquote-splicing} have been extended to several operands.
\item Procedures now may or may not refer to
locations. Consequently, {\cf eqv?} is now unspecified in a few
cases where it was specified before.
\item The mutability of the values of {\cf quasiquote} structures has
been specified to some degree.
\item The dynamic environment of the \var{before} and \var{after}
procedures of {\cf dynamic-wind} is now specified.
\item Various expressions that have only side effects are now allowed
to return an arbitrary number of values.
\item The order and semantics for macro expansion has been more fully
specified.
\item Internal definitions are now defined in terms of {\cf letrec*}.
\item The old notion of program structure and Scheme's top-level
environment has been replaced by top-level programs and libraries.
\item The denotational semantics has been replaced by an operational
semantics based on an earlier semantics for the language of the
``Revised$^5$ Report''~\cite{R5RS,mf:scheme-op-sem}.
\end{itemize}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "r6rs"
%%% End: