Posted on 2011-01-24 10:42
dennis 閱讀(3795)
評論(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,有興趣的可以玩玩吧。