ウォンツテック

そでやまのーと

sLisp

複数call/ccに対応

GitHub - sodeyama/slisp: lisp interpreter sLispの以下の点を改善しました。 コメントを可能にしました call/ccで生成するラムダ式で使う変数名をgensymで作るようにしました(変数名の衝突を防ぐ目的) call/ccを複数書けるようにしました。(ただし、トッ…

Software Design

そういえば、Software Design 2010年5月号で記事書きました。 Software Design 2010年5月号|技術評論社 * Emacsのトラノマキ 【13】俺流Lispインタプリタ……アリエルです。どこがemacsの記事なんだ、という突っ込みがあるかもしれませんが emacsって結局elis…

ぱーふぇくとYコンビネータ

slisp/slisp-ycc.el at master · sodeyama/slisp · GitHubsLispのベータ変換にバグがあり (defun Y (f) ((lambda (x) (f (x x))) (lambda (x) (f (x x))))) (print ((Y (lambda (f) (lambda (n) (if (= n 0) 1 (* n (f (- n 1))))))) 8)) みたいなコードをsL…

sLispで継続

Lisp処理系で継続も(ry ってことでsLispで継続を実装しました。 S式パースするのとcatch throw使う方法で書いたらなんかあっさり書けた。ま、厳密に仕様みながら実装したわけではないので色々動作はおかしいと思う あとcall/ccは1個しか書けません call/cc使…

sLispでYコンビネータ

「Yコンビネータも出来ないLisp処理系って処理系として終わってるよね。キモッ!」 と女子大生に言われないように、sLispでYコンビネータを出来るようにしました。 前回アップした似非Lisp処理系からかなり書き換えてます。 とりあえずdefunって結局lambdaだ…