File: changes.tex

package info (click to toggle)
r6rs-doc 1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 6,868 kB
  • ctags: 2,046
  • sloc: lisp: 5,409; makefile: 190
file content (174 lines) | stat: -rw-r--r-- 8,509 bytes parent folder | download
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: