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.

A.1 Extra Features

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