Scheme

SParser-2.2 released

大きな進展はないが、しばらくいじれないので修正版を公開しておく。 ファイルport、文字列portの実装(一部)と、defineの仕様を勘違いしていた*1ことの修正がメイン。インタプリタ方式で作り始めたけど、効率のためだけでなく文法の面からもコンパイルは必要…

継続渡しとコンパイル(2)〜末尾再帰の場合

前のエントリでループの度にヒープにクロージャを生成しているのが無駄だと思う人がいるかもしれないが、それは例に挙げた関数が末尾再帰になっていないからだ。継続渡しは末尾再帰の時に最も真価を発揮する。 というわけで階乗計算の末尾再帰版。 (define (…

継続渡しとコンパイル

実装はまだ先だが、継続渡しに変換してからコンパイルする方法がなんとなく分かった。 継続渡しへの変換 継続渡しへの変換は、簡単な例で示すと以下のようになる。 次の式を評価するためには、まず(g)を評価して、その戻り値を使って(f # x)を評価する。 (f …

Java/C#でScheme/Lispを作っている人たち

リファラより。 diary - Discommunicative id:kilrey 短期間にこれだけ被るというのも珍しいな。これがシンクロニティというやつか?以下ははてなブックマークSchemeタグで見つけたもの。 ひらっちblog: Schemeコンパイラ: auseil やさしい Lisp の作り方 by…

SParser-2.1 released

http://fhuman.esys.tsukuba.ac.jp/~nozom/SParser-2.1.zip変更点は、 終端文脈で無駄な継続を生成しないようにした read, writeを実装した 有理数(分数)に対応した GUIに入力履歴が付いて若干使いやすくなった その他バグ修正多数 例によってドキュメントも…

継続とはなにか

元々は上のトピックで補足として書いていたものが、長くなって読みづらくなって来たので分けることにした(きっとこれはこれで役に立つこともあるんじゃないかなあという期待も込めて)。書いてる本人も良く分かってないことを調べつつ書いているので、内容の…

継続=ふっかつのじゅもん?

この前ふと頭に浮かんで、すごく納得した思い付き。なぜこんなことを考えたかというと、 ある状態を保存しておいて後で呼び出す、というのはゲームのセーブ機能と似てるなあ call/ccに渡された継続の値を使用も保存もせずにブロックを抜けると何も起きないけ…

Reactive Programming

http://tabesugi.net/memo/cur/b1.html#101129via id:walkinglint:20031111#p15この人なんか知ってるような気がするなーと思ったら、やっぱり。 http://www.unixuser.org/~euske/profile.html 多分名前を知ったのは傀儡の著者名だと思うけど、意外と興味の範…

Practical Scheme

http://www.shiro.dreamhost.com/scheme/index-j.html 末尾再帰の話とかラムダ式の話が分かりやすかった。

ベイジアンフィルタの改善 --- Better Bayesian Filtering

http://www.shiro.dreamhost.com/scheme/trans/better-j.html

スパムへの対策 ---A Plan for Spam

http://www.shiro.dreamhost.com/scheme/trans/spam-j.html