UNSLISP/README.rst

38 lines
1.0 KiB
ReStructuredText

=======
UNSLISP
=======
R7RS compiler written in a basic form of Scheme. Compiles to Universal
Service GLLV bytecode.
License: GPL-3.0-only
-------------------
Source Restrictions
-------------------
Although the compiler handles all of R7RS, the source of UNSLISP is
designed to be used by a severely limited Scheme interpreter, which
* lacks ``call/cc``, ``call-with-values``, etc
* lacks user definable macros
* has fixnums only
* only uses immutable strings
* does not use "load" recursively
* uses R3RS essential procedures only (with some exceptions)
The goal is to have the compiler run under the MiniScheme in ``miniscm``
in DOS, and then run in GLLV to compile itself.
A proper implementation must have, in addition to R3RS,
* ``open-input-port``, ``read-char``
* ``open-output-port``, ``write-char``
* ``cond-expand``
* ``and``, ``or``
* ``error``
Hopefully your implementation has input and output ports (there's no other
way to write a compiler). Everything else can be expressed in terms of
macros or R3RS essential procedures.