R7RS Scheme LISP compiler for GLLV bytecode, written to work in R3RS
Go to file
Peter McGoron 40b129b0db readtable: correctly add trie values. Incorrectly propogates default procedure 2024-09-07 17:58:18 -04:00
miniscm trie: add with test 2024-09-04 02:16:10 -04:00
COPYING add doubly linked lists, tests, minischeme 2024-08-22 20:05:49 -04:00
Makefile minischeme: add char 2024-08-22 21:51:25 -04:00
README.rst readtables, first pass 2024-09-07 17:47:10 -04:00
chez-compat.scm readtables, first pass 2024-09-07 17:47:10 -04:00
doubly-linked-list.scm add sets 2024-08-29 22:24:33 -04:00
read.scm readtable: correctly add trie values. Incorrectly propogates default procedure 2024-09-07 17:58:18 -04:00
set.scm change around insert, delete, and update to hide representation 2024-09-05 21:18:04 -04:00
tests.scm readtables, first pass 2024-09-07 17:47:10 -04:00
util.scm trie: add with test 2024-09-04 02:16:10 -04:00

README.rst

=======
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 essental 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

* ``open-input-port``, ``read-char``
* ``open-output-port``, ``write-char``
* ``cond-expand``
* ``and``, ``or``
* ``error``

If your system supports any macro system at all, ``cond-expand``,
``and``, and ``or`` can be implemented. ``error`` can be implemented
as in SRFI-23 : https://srfi.schemers.org/srfi-23/srfi-23.html .