Scheme Interpreter in Clojure


This page contains source code of a Scheme interpreter written in Clojure. This interpreter can be embedded in a Clojure program to safely execute user provided scripts.

Note that this program is a work in progress. It is not feature complete, contains errors and is probably unsuitable for a person that wants only to develop Scheme software. If you however want to improve it or extend with features you need please feel free to contact me or simply start changing the contents of this page, provided you agree to the license below.


The use and distribution terms for this software are covered by the Common Public License 1.0, which can be found in the file CPL.TXT at the root of this distribution. By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software.

A local copy of this agreement is also available here.

Source code


Development status


Feature Supported Comment
symbols Yes
Numbers Yes Based on Clojure Numbers
Text strings Yes Java Strings with Unicode support
Characters Yed No octal value literals
Lists Yes
Arrays No


Feature Supported Comment
define partially No procedure definition format yet
lambda yes
variable lookup yes
primitive procedure evaluation yes
compound procedure evaluation yes no tail recursion yet
if yes needs error checking
cond no
let no
let* no
letrec no
begin no
set! no
quote yes
quasiquote no
unquote no
delay no
define-syntax no

Primitive functions

Function Supported Comment
+ yes no error checking yet
- yes no error checking yet
* yes no error checking yet
/ yes no error checking yet
display partially no support for compound objects yet
no r5rs support planned


Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License