Scheme interpreter in clojure
Posted on 2011-01-24 10:42 dennis 閱讀(3805) 評論(0) 編輯 收藏 所屬分類: my open-source 、計算機科學與基礎 、Clojure 昨天晚上用clojure搞了個scheme解釋器,基本上是sicp里的解釋器的clojure翻譯版本,可能唯一值的一提的是對transient集合的使用,實現副作用的set!。總共代碼包含注釋才366行,支持的feature包括
支持的primitive procedure包括常見的四則運算、car/cdr、list以及display、newline等。代碼放在了github上:https://github.com/killme2008/cscheme,有興趣的可以玩玩吧。
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,有興趣的可以玩玩吧。