simple Scheme interpreter in OCaml
OCamlで、lexicical scopeのclosureをもつプログラミング言語の処理系の作成をする演習などがあります。*1*2*3*4
これらを参考にして、schemeのインタープリタを勉強していたものの、長らく置いていたコードに再び手を入れていこうということで。
再開時点で機能しているもの
- define,内部define
- lambda
- if
- cond
- let, 名前付きlet,letlec
- and/or
- set!
- begin
- quote
- 整数
- cons pair
- 基本的なライブラリ関数
sicpの4章 metacircular evaluatorが動作。
githubにも同様の指向/試行?のrepositoryが400以上あるようで、やはりschemeによるものが多く見受けられる。PythonやHaskellによるものも目立つ。
今後どう展開すべきか
r7rs smallが批准されたばかりでもあるしこれをめざすか?
マクロ、コンパイラ?、CPS?、tail call最適化?、call/cc?
*1:数理科学的バグ撲滅方法論のすすめ - 第10回 静的スコープと関数クロージャ~関数型言語のインタプリタを書いてみる:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20070508/270202/
http://www.yl.is.s.u-tokyo.ac.jp/~sgotou/lecture/caml-enshu/
*3:計算機科学実験及演習4(プログラム検証)
http://www.fos.kuis.kyoto-u.ac.jp/~t-sekiym/classes/isle4/
*4:ソフトウエアサイエンス実験III S-10 (2012年度)コンパイラ実験
http://www.score.cs.tsukuba.ac.jp/~minamide/compiler-jikken/