Scheme Interpreter in Clojure

Description

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.

License

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

CPL.TXT

rscheme.clj

boot.scm

Development status

Reader

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

Evaluator

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