Codebox Software
Simple Scheme Interpreter
Published:
This is an interpreter for a sub-set of the Scheme programming language. It was written as a learning exercise, and should not be used for anything important. The interpreter is open-source software, the source code is available on GitHub.
To use the interpreter, write your Scheme code into a text file and run scheme.py
, passing the file name and location as a
command-line argument, for example:
python scheme.py mycode.txt
The interpreter supports basic arithmetic and equality operators, conditional statements, the cons
/car
/cdr
list operations, define
and lambda
.
Each statement in the source file will be evaluated in turn, and any printable results will be displayed to standard output. A few working Scheme programs and their resulting output are shown below:
(define factorial ( lambda (n) ( if (= n 1) 1 (* n (factorial (- n 1))) ) ) ) (factorial 6)
720.0
(define fib ( lambda (n) ( if (< n 3) 1 (+ (fib (- n 1)) (fib (- n 2))) ) ) ) (fib 10)
55.0
(define ackermann ( lambda (m n) ( if (= m 0) (+ n 1) (if (= n 0) (ackermann (- m 1) 1) (ackermann (- m 1) (ackermann m (- n 1)))) ) ) ) (ackermann 3 3)
61.0