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
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 |
Post preview:
Close preview