simple Scheme interpreter in OCaml

OCamlで、lexicical scopeのclosureをもつプログラミング言語の処理系の作成をする演習などがあります。*1*2*3*4

これらを参考にして、schemeインタープリタを勉強していたものの、長らく置いていたコードに再び手を入れていこうということで。

ogurat/oscheme · GitHub

 再開時点で機能しているもの

  • define,内部define
  • lambda
  • if
  • cond
  • let, 名前付きlet,letlec
  • and/or
  • set!
  • begin
  • quote
  • 整数
  • cons pair
  • 基本的なライブラリ関数

sicpの4章 metacircular evaluatorが動作。

 

githubにも同様の指向/試行?のrepositoryが400以上あるようで、やはりschemeによるものが多く見受けられる。PythonHaskellによるものも目立つ。

 

今後どう展開すべきか

r7rs smallが批准されたばかりでもあるしこれをめざすか?

マクロ、コンパイラ?、CPS?、tail call最適化?、call/cc?

 

*1:数理科学的バグ撲滅方法論のすすめ - 第10回 静的スコープと関数クロージャ関数型言語インタプリタを書いてみる:ITpro​​

http://itpro.nikkeibp.co.jp/article/COLUMN/20070508/270202/

*2:情報科学実験I ML演習

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/