2010-05-01から1ヶ月間の記事一覧

欲張り過ぎ?

SICPを読み始めたが読むペースが劇的に遅い。それもそのはず、何を血迷ったか原著を買ってしまっていたのだ!洋書も普通に読めるようになりたいとの動機から、また、若干翻訳が読みづらいとのレビューを受けて。尊敬する和田先生ごめんなさい...。 電子辞書…

SICP学習の参考に

いまだに着手してない...。 ブログ SICPを取り扱ったブログを検索してみた。大勢の方が書いてますね。 SICP関数型言語の勉強に「計算機プログラムの構造と解釈」を読もう - higepon blog http://d.hatena.ne.jp/yinkyweb/ awacio.log http://d.hatena.ne.jp/…

読みたい本

The Seasoned Schemer (The MIT Press)作者: Daniel P. Friedman,Matthias Felleisen,Duane Bibby,Guy Lewis Steele Jr.出版社/メーカー: The MIT Press発売日: 1995/12/21メディア: ペーパーバック購入: 3人 クリック: 17回この商品を含むブログ (21件) を…

コルーチン3(コルーチンから脱出)

プログラミングGaucheのpp298-303。前回のコルーチンによるREPLは(exit)を与えてGaucheのインタプリタを終わらせるまで無限に繰り返していたけど、今回はコルーチンから脱出してGaucheのREPLのトップレベルに戻ってくるように修正するらしい。そのために定義…

コルーチン2(call/ccでREPL)

プログラミングGaucheのpp296-298。今回はコルーチンでREPLを実装する。もちろんread、eval、printの各処理はGaucheに丸投げだけどな!それは実装とは言わないッ! 実行結果がこんな感じになるように、3つのコルーチンreader、evaluator、printerを作成する…

はてな記法

改行すると行間空きすぎるなーと思ってたら、改行はpタグになるのか。brタグを出力させようと思ったらどうすれば良いのかな? はてな記法一覧のページに「改行記法」があった! 改行タグを挿入する(改行記法) - はてなダイアリーのヘルプ 期待通りじゃなか…

call/ccとdefine

前回書いたコルーチン定義用マクロdefine-coroutineの中に、以下のようなコードがあった。 (define routine (lambda () (call/cc (lambda (return) (define yield (lambda () (call/cc (lambda (cont) (enqueue! *tasks* cont) (return))))) body ...)) ((de…

コルーチンをC#で

前回のコルーチンっぽいものをC#で書いてみた。いろいろ問題があるかもしれないけど。 無限ループなので、Ctrl+Cかなんかで中断すべし。 /// <summary>The class which represent the co-routines which should be work cooperatively.</summary> /// <typeparam name="T">The type of return value </typeparam>…

コルーチン

プログラミングGaucheのpp.294-296の「コルーチン」の前半。 call/ccでコルーチンまで実現できるらしい。ってことで、コルーチンを実現するための構文define-coroutineの定義を写経。 ;; キューの機能を使うから (use util.queue) ;; コルーチン再開するとき…

簡易な例外機構

プログラミングGaucheのpp.292-293。他の主要な言語でいうところの例外みたいな仕組みすらcall/ccで実現可能らしい。 そういえば組込みのguardもcall/ccで実装されていると聞いたことがあるな。 call/ccどんだけー。 目標とするクライアントコードは次のとお…

break/next名前付きfor-each

他の主要な手続き型言語でいうところのbreakやcontinueの仕組みを、Schemeの組込みのfor-eachに追加してやろう、ということらしい。 つまり、次のようなことができるようにしたい。 gosh> (for-each-ext return next (lambda (x) (cond ((odd? x) (next #t))…

大域脱出

call/ccを利用した大域脱出の例。今までcall/ccでウダウダ考えていたのでさすがに挙動の理解は簡単。 ただし、継続と絡めて説明しろと言われても無理。そういう意味ではcall/ccは全く理解できていない。指定したラベルを含むS式から脱出するマクロblockを定…