2010/05/31

遅延評価はマクロで、多値は継続とマクロで実装できるんですって

そういえば、伝統的マクロなら継続も実装できるんでしたっけ?



The Scheme Programming Language, 4th Edition

syntax-rules: allf

便利そうだったので。
こうかなー。


On Lisp

熊本市内の本屋さんに「実用 Common Lisp」がなかった

今日、私の知る限りで最も品揃えの良い熊本市内の本屋さん2件を回ってみましたが、実用 Common Lisp (IT Architects’Archive CLASSIC MODER) は置いてませんでした・・・orz

「私の知る限り」なんて言わなくても、熊本市内で品揃えの良い2件と言ったら、三年坂のツタヤとダイエーのキクヤですね、はい。

ついでに、プログラミング言語SCHEMEビューティフルコード を立ち読んだら、欲しくなりました・・・。

後者は、scheme の syntax-case が載っている25章だけでも良いので欲しいなー。などと Twitter でつぶやいたら、PDF(英語)を教えて頂きました!ありがとうございます!

前者は、英語版が Web 上に公開されているので、チラ見してみます。

Web 上には、無料で読めるものが他にもたくさんあるしなー・・・。実用 Common Lisp (IT Architects’Archive CLASSIC MODER) は、また今度で良いかなー・・・。いや、立ち読んでみたいだけだったんだ。


ビューティフルコード実用 Common Lisp (IT Architects’Archive CLASSIC MODER)プログラミング言語SCHEMEThe Scheme Programming Language, 4th Edition

syntax-rules: let/

(let ((a #f)(b #f)(c #f)) (list a b c)) を (let #f (a b c) (list a b c)) と書ける的な。
良い名前が思い浮かびませんでした。当初 lump-init-let としていましたが、長いのでボツ。(let-with init-value ... というような意味合いを込めて、let/ ・・・。



プログラミング言語SCHEME

syntax-rules: define-syntax-rule, define-syntax-rules

こんなのもありかなー、とか。



こんなのもありかなーとか。


define-syntax-rules がそうなら、define-syntax-rule もこうかなーとか。


結局このくらいが丁度良いのかも。


プログラミングGauche

2010/05/29

syntax-rules: lets

Oleg さんって The Reasoned Schemer とか SXML の方ですよね。comp.lang.scheme もでしたっけ?
syntax-rules の引数ってこういうことなのか。




プログラミングGaucheThe Reasoned Schemer

2010/05/28

Emacs view-mode がステキ便利

ソースコードはもちろんですが、テキストファイルなどを Emacs で読む機会が多いです。
つい先日も、Twitter で見かけたテキストファイルをダウンロードして、Emacs で読んでいました。
実は、C-x C-q (読み取り専用)なども知らなかったため、C-n C-p で読んでいる時に文章中に n や p が紛れ込むこともしばしばです。これはテキストファイルに限らずプログラムを書いている時もそうで、わりと困っていました。

そこで、こういうものを見かけたので、試してみたら便利も便利。。。
  1. emacsでコードリーディングをするときはvi-modeがおすすめ - goinger的日記
  2. view-mode - とりあえず暇だったし何となく始めたブログ
  3. Ctrl+中指か薬指を使うキー操作が多いEmacsで指の負担を軽くする方法 - (rubikitch loves (Emacs Ruby CUI))
特に、3の rubikitch さんところで紹介されている key-chord.el と view-mode のコンボがすごく便利でした。

例えば、.emacs はよく編集しますが、編集を始めるまでに眺める時間の方が長かったりします。この際、view-mode をデフォにしてみました。

どうせなので、ファイルを開いたときはデフォルトで view-mode にすることにしました。しばらくこの状態で試してみます。


設定は、rubikitch さんのところから頂きました。
キーバインドは好みで以下のように変更しました。メモがてらさらしておきます。


入門 GNU Emacs 第3版

quack-find-file

Emacsでschemeを書く時に、quack.elを使っています。quack.elを使っていると、C-x C-f(つまり find-file)がquack-find-fileになります。
これを解除したかったので、以下のように.emacs に書き加えました。

(setq quack-remap-find-file-bindings-p nil)



入門 GNU Emacs 第3版

2010/05/27

「そのプロセスにおいて、Schemeを使うことに関する多くの勘を やしなうだろう。」

数nの階乗を計算するが、手続きの最終行で自身に再帰できるようにするた めに名前"fact"が必要であるように思える。しかし、我々はそれは必要でない ことを理解し、そのプロセスにおいて、Schemeを使うことに関する多くの勘を やしなうだろう。

これが本当かどうかは置いといて、みんなもっと Y Combinator で遊ぼうよー!

 計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)The Little Schemer, 4th EditionThe Seasoned Schemer

Yコンビネータ 継続編

fixed point of call/cc だそうです。
タイトルに Y Combinator と入れましたが、正確にはそうではないようです。

すごくおもしろそうだったのでプリントアウトして頑張って読んでます。印刷したら10ページありました。まだ3ページくらいしか読んでないので、残りを読んでみます。

で、一見してもよくわかりません。よくわからないので、いじくり回してみました。先日ノーマルな Y Combinator でやったことの、逆過程のようなことをやりました。
結果、理解できてないのですが、なんとなく雰囲気がつかめた気がします。気がするだけかもしれません。
以下コード。



入門Common Lisp―関数型4つの特徴とλ(ラムダ)計算計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)