A. R5RS Compliance
What follows is a list of R5RS Chapters and Sections; for each Chapter
and/or Section there is a piece of text explaining the compliance of
Psyche.
The text ``Full'' is used to mark full compliance. This means that the
class R5RSTest in file interpretertest.py tests at
least all the examples in that Section or Chapter.
``Complete'' means that for every implementation this feature depends
on, the feature is fully implemented. For example, section 3.5
requires on the recognition of all primitive expressions; since not
all primitive expressions are recognized, section 3.5 cannot be fully
implemented; however, for those expressions that are recognized,
section 3.5 is fully implemented.
- 1 Introduction
- N/A.
- 2.1 Identifiers
- Full.
- 2.2 Whitespace and Comments
- Full.
- 2.3 Other notations
- Unquoting and the backquote are not
implemented; numbers with a # are not implemented
either.
- 3.1 Variables, Syntactic Keywords and Regions
- Full.
- 3.2 Disjointness of Types
- Complete. The type associated with
port? is not implemented.
- 3.3 External Representations
- Full.
- 3.4 Storage Model
- Full.
- 3.5 Proper Tail Recursion
- Complete.
- 4.1.1 Variable References
- Full.
- 4.1.2 Literal Expressions
- Full.
- 4.1.3 Procedure Calls
- Full.
- 4.1.4 Procedures
- Variable argument lists are not implemented.
- 4.1.5 Conditionals
- Full.
- 4.1.6 Assignments
- Full.
- 4.2.1 Conditionals
- The alternate form => is not
implemented. The case statement is not implemented.
- 4.2.2 Bindings constructs
- Only let is
implemented. let* and letrec are not implemented.
- 4.2.3 Sequencing
- Not implemented.
- 4.2.4 Iteration
- Not implemented.
- 4.2.5 Delayed Evaluation
- Not implemented.
- 4.2.6 Quasiquotation
- Not implemented.
- 4.3 Macros
- Not implemented.
- 5.1 Programs
- Full.
- 5.2 Definitions
- Full.
- 5.3 Syntax Definitions
- Not implemented.
- 6.1 Equivalence Predicates
- Complete.
- 6.2.1 Numerical Types
- Only reals, rationals and integers are
implemented.
- 6.2.2 Exactness
- Not implemented.
- 6.2.3 Implementation Restrictions
- N/A.
- 6.2.4 Syntax of Numerical Constants
- Only integer constants
without a # are recognized.
- 6.2.5
- The following procedures are not implemented:
complex?, real?, rational?,
integer?, exact?, inexact?, max,
min, gcd, lcm, numerator,
denominator, floor, ceiling,
truncate, round, rationalize,
atan, sqrt, make-rectangular,
make-polar, real-part, imag-part,
magnitude, angle, exact->inexact,
inexact->exact
- 6.2.6 Numerical Input and Output
- Not implemented.
- 6.3.1 Booleans
- Full.
- 6.3.2 Pairs and Lists
- Full.
- 6.3.3 Symbols
- Full.
- 6.3.4 Characters
- Full.
- 6.3.5 Strings
- Full.
- 6.3.6 Vectors
- Full.
- 6.4 Control Features
- The following procedures are not
implemented: apply, map, for-each,
force, call-with-current-continuation,
values, call-with-values, dynamic wind
- 6.5 Eval
- Not implemented.
- 6.6.1 Ports
- Not implemented.
- 6.6.2 Input
- Not implemented.
- 6.6.3 Output
- Not implemented.
- 6.6.4 System Interface
- Not implemented.
- 7 Formal Syntax and Semantics
- N/A.
Scheme recognizes two environments: the Scheme5 environment, which
contains all procedures from R5RS, and the Interaction environment,
which can contain extra procedures. This section describes the extra
procedures in Psyche. They are enabled by default.
(error obj ...)
Raises an error with the specified objects as its arguments. Identical
to the error procedure as used in SICP[2].
Y. Duppen