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:
boundp
for every required procedure to determine if a definition exists at runtime. The Lisp tester must be loaded alongside cpscm-drv.lsp.
try { ... } catch
.