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.

(`error` obj ...)

Raises an error with the specified objects as its arguments. Identical
to the error procedure as used in SICP[2].

Y. Duppen