Appendix B. R5RS Liberties and Violations

This section lists all ways in which SISC interprets the R5RS specification, where the standard is not particular clear. Such interpretations may allow non-portable code to be written and executed on SISC. Additionally, all known R5RS violations are listed. Actual violations are considered SISC bugs, and have a high priority for being fixed. Violations of the standard are written in bold text.

  1. 2.3 - SISC allows identifiers to start with '+', '-', or '.' if they cannot be read as numbers.

  2. 2.3 - SISC uses the reserved characters '[' and ']' as synonyms for '(' and ')' respectively.

  3. 2.3 - SISC does not raise any warning or error when encountering the reserved characters "[]{}|", and allows "{}|" to appear in identifiers.

  4. 4.1.3 - SISC does not distinguish between () and the quoted empty list '().

  5. 6.2.3 - The standard desires that that operations such as sqrt try to provide exact results when given exact arguments. While SISC meets the requirement for sqrt, it is not clear what other mathematical functions should have this behavior. SISC takes no heroic efforts to meet this requirement.

  6. 6.2.6 - SISC allows radixes other than those specified in the contract for number->string and string->number. In particular, any radix up to 36 is allowed, and any unsupported value causes SISC to revert to base 10.

  7. 6.5 - SISC currently returns an environment from the scheme-report-environment which contains four bindings not specified in R5RS, bindings which are needed by R5RS syntactic keywords.

  8. 6.6.2 - SISC currently only warns when end-of-file is reached in read, rather than signaling an error. The unterminated datum is discarded.

All of the liberties described above are implemented for the convenience of the programmer. If desired, strict R5RS syntax and semantics may be enabled with the strictR5RSCompliance configuration parameter (see the section called “Configuration Parameters”), causing SISC to raise errors in all R5RS situations that result in "an error", as well as respect the lexical syntax's reserved characters. When in strict compliance mode, the above mentioned deviations no longer apply and SISC is entirely R5RS compliant.