昨天晚上用clojure搞了个scheme解释器,基本上是sicp里的解释器的clojure翻译版本,可能唯一值的一提的是对transient集合的使用,实现副作用的set!。总共代码包含注释才366行,支持的feature包括
支持的primitive procedure包括常见的四则运算、car/cdr、list以及display、newline等。代码放在了github上: ,有兴趣的可以玩玩吧。
Feature | Supported | Comment |
---|---|---|
define | yes | |
lambda | yes | |
variable lookup | yes | |
primitive procedure evaluation | yes | |
compound procedure evaluation | yes | no tail recursion yet |
if | yes | |
cond | yes | |
let | yes | |
let* | yes | no named let* yet |
letrec | no | |
begin | yes | |
set! | yes | |
quote | yes | |
quasiquote | no | |
unquote | no | |
delay | no | |
define-syntax | no |
文章转自庄周梦蝶 ,原文发布时间2011-01-24