diary

今日の要約: 俺Lispに必要な仕様がまとまってきた。実際に作るかどうかは未定。しかし、カッコ良い名前を考えておく事。 http://d.hatena.ne.jp/ranekov/20080403/1207163582 http://d.hatena.ne.jp/ranekov/20080228/1204186771 http://d.hatena.ne.jp/rane…

Haskellで継続ベースのwebアプリを構築できるフレームワークを調べた。 WASHという奴らしい。 暇が出来たら試してみる(Arcよりも優先順位低い)。 http://www.ice.nuie.nagoya-u.ac.jp/~h043078b/wiki.cgi?page=WASH 例のArcの「said」アプリを作って比べるペ…

shs(仮)とArc

今回の結論: 暇が出来たら、Arcが「HTTP上の/bin/sh」として使えないか試してみる 色々書いてたが、長くなったので要約だけ残す。 phpはアレだが、「php的なアプローチ」(?)は悪くないとは思ってる。 今のphpは、進化する方向を間違えてしまったように思え…

call/ccパズルをeval-svで解いて?みた。 http://e.tir.jp/wiliki?eval-sv%3a%a5%b9%a5%c6%a5%c3%a5%d7%bc%c2%b9%d4 今思うと、S式バトラーよりも、こっち(call/ccパズルみたいな問題をステップ実行で解かせる)をgauche.gongの出し物にした方がウケが良かっ…

「はてなようせいとまなぶ R5RS表示的意味論」を読んだ。 http://lambda.bugyo.tk/hatena/r5rs.html はてなようせいがちーちゃんに見えてきた。 ググれ!

花粉症になったっぽい。 明日はイベントなのにピンチだ。 抗ヒスタミン薬というのが効くらしいので、イベントに行く前に買っておきたい。

バスツアーから帰ってきたら、amazonからメールが来ていた。 予約していたプログラミングGaucheが大人気らしく、届くのは四月中旬ぐらいになるらしい。 なんてこった。

土日は、某観光社のバスツアーに行ってきた。 温泉に入った。 詳細は省略するが、大満足だった。 今後もまたツアーが組まれる事があれば、何としても参加したい。

evalのよみかた

http://www.area51.gr.jp/~rin/diary/?date=20080308#p04 evalは「エ」ヴァルではなく「イ」ヴァルだったらしい? gauche.gongのeval-svのデモの時に思いっきりエヴァルエヴァル言ってしまってた。 これは恥ずかしい。 次からは間違わないようにしよう。イヴ…

S式バトラーは結局、「battle-main手続きが終了したらペナルティを与える」ように仕様変更した。 この仕様変更により、最短のS式は「(define (battle-main) (battle-main))」となり、最大で約10秒ぐらいになった。それでも長いが。 eval-svがかなり重いとい…

S式バトラーの不具合修正

S式バトラーの致命的エラーログ(S式バトラーの戦闘実行スクリプトが一定時間内に終わらなかった時などに、問題のあるS式をユーザから任意で記録してもらうログ)に、「(define (battle-main))」というS式が記録されていた。 実際に自分で確かめてみると、確か…

gauche.night行きたかった。 今考えれば、二次会だけでも無理矢理に参加しておくべきだったかも知れない。 しかし、もう遅い。 とりあえず、 http://d.hatena.ne.jp/keyworddiary/Gauche 辺りを見て回って、gauche.nightの大体の概要を把握。 小黒さんのglin…

Arcでは「define」や「lambda」という「単語」を廃止して、「def」や「fn」のような「略語」にしてある。 これは実はかなり重要な事のような気がしている。 というのは、「lambda」はともかく、「define」は、英語の元の単語と全く同じ文字列だ。 しかし、そ…

風邪引いた。 すごい頭がフラフラして胴がしんどい。 今日はgauche.gongの追い上げ&家の雑用の為に有休を取っていたが、ただ単に寝るだけに消耗されてしまった。 http://practical-scheme.net/wiliki/wiliki.cgi?Arc%e3%81%8b%e3%82%89%e3%81%ae%e6%8c%91%e…

SICP日本語版をどうにか入手して、確認してみた。 これ、やっぱりメタ循環インタープリタだ……。 おそらく、gauche.nightではその辺を既に極めた人は多そうだし、gongの方でもそれらしい演目があるようなので、「ちゃんとした実装」は、聞いた話やプレゼンを…

http://www.oreilly.co.jp/editors/archives/000166.html なかなか発売されないと思ったら、発売日延期されてた。 gauche.nightで販売されるらしいが、先行発売という事は、みんな買いそうなので、現地に遅れて到着したら既に売り切れてそうだ。 そして、当…

ステップ実行eval開発中(9)

internal defineも正常に機能していない事に気付いた。 ちゃんとtest caseを書かないと駄目だなあ。 defineは、トップレベルで呼ばれた時と、let等の内部で呼ばれた時とで挙動が違う。 これは、defineの内部で、トップレベルで呼ばれたのかlet等の内部で呼ば…

ステップ実行eval開発中(8)

quasiquote内の、unquoteとunquote-splicingが正常に動作していない事に気付き、しばらくはまった。 (Gaucheの)quasiquoteは、内部のunquote、unquote-splicingを、シンボルでのみ判定しており、その実体が何かという事については気にしていないという事を知…

ステップ実行eval開発中(7)

マクロとspecial formの扱いが予想以上に大変な事になった。 デモアプリを作らなくてはいけないが、これがまた大変だ。

ステップ実行eval開発中(6)

隠し束縛を安全に隠す方法を思い付いた。 (gensym)を使って、文字列からは変換不可能なシンボルを生成する 対象モジュール内で、このシンボルに対して、隠したい内容(今回はspecial formの実体)を束縛する このシンボル内の束縛にアクセスする為には、元のシ…

ステップ実行eval開発中(5)

WiLiKiに書いた。 しかし……これって、ものすごくR5RS外だよなあ、あんまり突き詰めるような部分じゃないよなあ、移植性ないよなあ、とも、書きながら思ってしまった。 mzschemeで追試したら、mzschemeではそもそも、special formやmacroの実体に、(即値風に)…

ステップ実行eval開発中(4)

できた。eval拡張パッチが。 さっきのコメントは、((lambda () ...) ...)のような、car部分がlistになってるものについてだった。気にしなくてよかった。 R5RSのevalの項目も確認した。 expression は,データとして表現された一つの妥当な Scheme 式でなけ…

ステップ実行eval開発中(3)

http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AYAGHG%3AIntroduction#H-1l0p7af 回り道したが、これを発見した。凄い有難い。 で、問題のコードはcompile.scmのpass1のところにあった。 evalの第一引数のlistの先頭が何なのかをpass1/lookup-head…

ステップ実行eval開発中(2)

要は、 ((eval `(,lambda (arg) arg) (interaction-environment)) 123) => 123 のように、evalに対して、マクロやspecial formの「実体」を渡した時にも、evalがそれをマクロやspecial formとして扱ってくれれば問題は解決するのだが、とりあえずGaucheはそ…

ステップ実行eval開発中(1)

とりあえず手続き類は問題無く動くようになった。 しかし、マクロとspecial formの評価時に割り込み処理を入れるのが難しい。 マクロとspecial formには割り込み処理を入れない事にすると、当初に想定していた利用方法の大半が駄目になってしまう為、この部…

gauche.gong出たい

ステップ実行evalが実はかなり応用範囲が広い事に気付き、ちょっとgauche.gongでプレゼン(という名目の自慢)をしたくなった。 しかし、gauche.gongの応募締め切りは2/17だ。 gauche.nightのある3/8は、Zepp Nagoyaの某イベントに行く(最優先)のだが、このイ…

ラブやん9巻を読んだ。 俺も「今晩から頑張る。」 とりあえず、「一月中に何か作る」という事にしていたのを思い出したので、適当に作った。 http://e.tir.jp/wiliki?hdn%3a%ba%ee%c0%ae%ca%aa

ステップ実行evalが欲しい

インターフェースは以下のような感じ(仮)。 (with-step-eval expr env step-num interval-proc) exprとenvは、通常のevalと同じ。 step-numに、「何ステップ分実行したらinterval-procを呼ぶか」のステップ数を設定。 「ステップ」は、例えば、(car (cons 1 …

よく考えたら、三月八日の某イベントは、まだ「9:00-21:00」のどの時間にやるのか不明だ。 場合によっては、gauche.nightとのかけ持ちは可能そうだ。 某イベントの詳細が発表され次第、前売り券を買うかどうか決めよう。

gauche.nightのお知らせが来た。 しかし、三月八日は某イベントで名古屋に遠征しなくてはならないので、ちょっと今回は行けない……残念だ。 haskellでの制作も全然進んでいない。 とりあえずしょぼめの物は完成させよう。 ペルツォフカは実は貴重な酒だったら…