This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki ImplementationsMay version 2











Things that implementations explicitly ''may'' do:

* Define external representations for additional types of objects
* Share empty strings, vectors, and bytevectors (detectably by `eq?` or `eqv?` or neither)
* Recognize additional cases of tail calls.
* Use different orders of evaluation in procedure calls
* Return a non-promise as-is from `force`
* Treat promises the same as their forced values in some cases
* Return literal structure or newly allocated objects in `quasiquote`
* Write `quote` and friends using lexical syntax
* Provide macro facilities other than `syntax-rules`
* Provide additional `features` identifiers
* Treat additional characters (such as FF) as whitespace
* Detect procedure equivalence beyond what is required
* Share structures between constants
* Use multiple internal representations of numbers
* Provide more than one format for inexact numbers
* Use floating-point arithmetic for inexact numbers
* Silently coerce the unrepresentable result of an exact operation to an inexact value of the highest precision available
* Return an exact result to an inexact operation if it can prove it is safe
* Support only a limited range of numbers of any type
* May support only some types of numbers
* Coerce an exact constant to an inexact value
* Distinguish `+inf.0`, `-inf.0`, `+nan.0`, and `0.0`
* Use `+nan.0` to represent non-real numbers
* Accept non-standard exponent marker
* Allow the default inexact-number precision to be set by the user
* Represent some irrational numbers exactly
* Extend the number system with non-standard types
* Return inexact values from `make-polar`
* Silently coerce exact non-real numbers to inexact
* Restrict the domain of `string->number` in specified ways
* Support any or all Unicode characters
* Support non-Unicode characters
* Support additional character names
* Forbid characters (other than ASCII ones) from appearing in strings
* Return the argument from case-folding procedures if no change was made
* Always downcase upper-case sigma to normal lower-case sigma
* Condition objects that satisfy `file-error?` or `read-error?` but not `error?`
* Support arguments other than 5 to `scheme-version-environment` and `null-environment`
* Make the result of `scheme-report-environment` and `null-environment` mutable
* Extend `eval` to allow other objects
* Provide port types other than textual and binary
* Provide input/output ports
* Recognize alternative line-ends
* Use locale information to encode and decode environment variables
* Vary the epoch of `current-jiffy` between runs of a program
* Bind a record-type name to a syntactic or procedural object
* Process `cond-expand` and `import` library declarations before `import`, `include`, and `include-ci` declarations
* Load libraries more than once
* Provide a REPL
* In the REPL, treat all variables as bound
* Allow the REPL to read input from a file
* Allow additional Unicode characters in identifiers
* Process "is an error" situations in a variety of ways
* Raise an exception on domain errors
* Provide non-portable extensions of any kind


2013-07-07 05:00:58