HaskellのContinuationモナドを雰囲気だけGaucheに移植してみる。 Contクラス まず、疑似Continuationモナドとして、Contクラスを作る。 Contクラスが持つrunContスロットは同名のgetter関数を持つ。 returnは全然ジェネリックファンクションになってないんだけど、>>=と横並びにしたかったので。 (define-class <Cont> () ((runCont :init-keyword :r :getter runCont))) (define-method return (a) (make <Cont> :r (lambda (k) (k a)))) (define-method >>= ((c <Cont>) f) (make <Cont> :r (lambda (k) ((runCont c) (lambda (a) ((ru
これで今日のYARV勉強会はおしまいです。 って、これではやけに短くなってしまったので、おまけとして、るびま で触れられていた 本当は、今回何か簡単な言語のコンパイラを作ろうと思っていたのですが、間に合いませんでした。誰か Scheme あたりで挑戦してみませんか。かなり簡単だと思いますよ。 これをやってみようと思います。 yasm.rb 記事で紹介されているyasmモジュールがRubyのtrunkに見つからなかったので、旧YARVのレポジトリ http://www.atdot.net/svn/yarv/trunk/lib/yasm.rb から拾ってきて適当に修正して使っています。変えたのは、YARVの仮想マシンオブジェクトを表すクラス名と - module YARVCore + class VM - YARVCore:: + VM:: メソッド名としてSymbolを渡すと怒られるみたいだ
Wizard Book n. Hal Abelson's, Jerry Sussman's and Julie Sussman's Structure and Interpretation of Computer Programs (MIT Press, 1984; ISBN 0-262-01077-1), an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Also, less commonly, known as the Purple Book. from The New Hacker's Dictionary, 2
内容 プログラミングについて体系的に学ぶとともに,実習を通して理解を深めます. プログラミング言語としては,文法が簡単で扱いやすいという理由で Scheme 言語を採用しています. 自宅のパソコンなどで、DrScheme を練習したい人 DrScheme は、 Dr. Scheme のWebページからダウンロードできます。 このWebページで、「Download DrScheme」をクリック、その後「Download」をクリック。 すると、Dr. SchemeダウンロードのWebページが現れるので「Download links」のところから、適切なリンクを選んでクリック。すると、ダウンロードが始まります。 この Web ページで公開している資料について 手作りの資料ですので, ミスが発見され次第,少しずつ手直しします.ご了承ください. Scheme 説明資料と演習問題 (参考) プログラ
昨日のエントリに Rui さんからコメントを頂きました。ありがとうございます。 私もなんだか同じイメージを持ってます。静的スコープでオブジェクトの寿命が永遠(無限エクステント)というのがまず初めにあって、その結果クロージャがあるという印象。 私が漠然と感じているクロージャへの解釈を、一言で表現されている様に思いました。 ここで無限エクステントに触れられていますが、実は私も、先のエントリを書いたとき、クロージャを副次的に作り出している仕様の一つとして、無限 (実装上は有限になるのでしょうが) エクステントを挙げようとは思ったのです。 しかし、レキシカルスコープとブロックの階層化 (手続きをトップレベル以外でも定義可能とか、lambda はどこでも書けるとか) を挙げることで、必然的に無限エクステントが求められることになると考えて、そちらを優先したのでした。 そして、その考えが、 例えば、レキ
Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く