Posted on 2011-01-24 10:42
dennis 阅读(3816)
评论(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,有兴趣的可以玩玩吧。