Trick is a full R7RS-small compliant implementation of the Scheme programming language, targeting an SECD machine. It's written in Python and, as of this moment, is very very slow! It's mostly an educational project at the moment, though I might be able to write a faster implementation of the virtual machine in the future.
The following SRFIs are supported:
- SRFI 1: List Library
- SRFI 8: receive: Binding to multiple values
- SRFI 14: Character-set Library
- SRFI 48: Intermediate format strings
- SRFI 69: Basic hash tables
- SRFI 151: Bitwise Operations
Python 3.9 or later is required. There is no other dependency.
In order to get a REPL, simply run ./trick.sh
. In order to compile a source
file named 'foo.scm' into a FASL file that can be run by the VM run ./trick.sh -c foo.scm
. This creates a file named foo.fasl
. Now you can run the file by
running ./trick.sh run foo.fasl
.
equal?
does not work correctly with circular lists.map
does not work correctly with circular lists.