Posted on 2011-01-24 10:42
dennis 阅读(3787)
评论(0) 编辑 收藏 所属分类:
my open-source 、
计算机科学与基础 、
Clojure
昨天晚上用clojure搞了个scheme解释器,基本上是sicp里的解释器的clojure翻译版本,可能唯一值的一提的是对transient集合的使用,实现副作用的set!。总共代码包含注释才366行,支持的feature包括
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 |
|
支持的primitive procedure包括常见的四则运算、car/cdr、list以及display、newline等。代码放在了github上:
https://github.com/killme2008/cscheme,有兴趣的可以玩玩吧。