R7RS small language
新特性:
* Modules have been added as a new program structure to improve
encapsulation and sharing of code. Some existing and new
identifiers have been factored out into separate modules.
* Exceptions can now be signalled explicitly with raise,
raise-continuable or error, and can be handled with
with-exception-handler and the guard syntax.
* New disjoint types supporting access to multiple fields can be
generated with define-record-type.
* Parameter objects can be created with make-parameter, and
dynamically rebound with parameterize.
* Blobs, homogeneous vectors of integers in the range [0..255],
have been added as a new disjoint type.
* Ports can now be designated as binary or character ports, with
new procedures for reading and writing binary data.
* String ports have been added as a way to write characters to
and read characters from strings.
* Current-input-port and current-output-port are now parameter
objects, along with the newly introduced current-error-port.
* Syntax-rules now recognizes as a wildcard, allows the ellipsis
symbol to be specified explicitly instead of the default ...,
allows template escapes with an ellipsis-prefixed list, and
allows tail patterns to follow an ellipsis pattern.
* Syntax-error has been added as a way to signal immediate and
more informative errors when a form is expanded.
* Internal define-syntax forms are now allowed preceding any
internal defines.
* Letrec* has been added, and internal define specified in terms
of it.
* Case now supports a => syntax analagous to cond.
* Case-lambda has been added to the base library as a way to
dispatch on the number of arguments passed to a procedure.
* Positive and negative infinity and a NaN object have been added
to the numeric tower as inexact values with the written
representations +inf.0, -inf.0 and +nan.0, respectively.
* Map and for-each are now required to terminate on the shortest
list when inputs have different length.
* Member and assoc now take an optional third argument for the
equality predicate to use.
* Exact-integer? and exact-integer-sqrt have been added.
* Make-list, copy-list, list-set!, string-map, string-for-each,
string->vector, copy-vector, vector-map, vector-for-each, and
vector->string have been added to round out the sequence
operations.
* The set of characters used is required to be consistent with
the latest Unicode standard only in so far as the
implementation supports Unicode.
* string-ni=? and related procedures have been added to compare
strings as though they had gone through an
implementation-defined normalization, without exposing the
normalization.
* The case-folding behavior of the reader can now be explicitly
controlled, with no folding as the default.
* The reader now recognizes the new comment syntax #; to skip the
next datum, and allows nested block comments with #| ... |#.
* Data prefixed with reader labels #<n>= can be referenced with
#<n># allowing for reading and writing of data with shared
structure.
* Strings and symbols now allow mnemonic and numeric escape
sequences, and the list of named characters has been extended.
* File-exists? and delete-file are available in the (scheme file)
module.
* An interface to the system environment and command line is
available in the (scheme process-context) module.
* Procedures for accessing the current time are available in
the (scheme time) module.
* A complete set of integer division operators is available in
the (scheme division) module.
* Transcript-on and transcript-off have been removed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
R7RS small language 的最后一个手稿已经出来了,最终版即将推出
很期待