ウォンツテック

そでやまのーと

elisp

複数call/ccに対応

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

ぱーふぇくと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だ…

sLisp

今度書く記事のためにelispでLISPインタープリタ「sLisp」を書きました。 http://github.com/sodeyama/slisp/blob/master/slisp.ellisp言語で書いてはいますが、読み込んだ文字列をそのままread関数でS式をパースするような事はせず、 その他の言語で行うの…