CPSCM Scheme

R5RS conformance

CPSCM fully implements R5RS syntax-rules macros, including all standard macros (such as do, and, or etc.) As far as semantics, all backends pass the R5RS pitfalls test, except the Lisp backend, which defines both #f and the empty list as NIL and thus fails 5.1 - 5.3.

The following table details which standard R5RS procedures are not yet implemented by the various back-ends. The "simple Scheme" back-end implements the entire standard, by design.

Back-end R5RS violations Extras
Javascript 41 procedures missing;
strings are immutable
SRFI-6 output strings
Common Lisp 67 procedures missing;
#f and () are identical (Lisp NIL)

Additionally, eval, rational and complex numbers, and the exact/inexact distinction are not implemented by any backend.

The list of unimplemented procedures has been obtained automatically:

Common Lisp
scm/lisp-backend-conformance.scm creates a Lisp program (conformance-test.lsp) that calls boundp for every required procedure to determine if a definition exists at runtime. The Lisp tester must be loaded alongside cpscm-drv.lsp.
Javascript
Similar idea, but using try { ... } catch.