人気ブログランキング | 話題のタグを見る
On Lisp 第15章 関数を返すマクロ
そろそろ紹介されるマクロが大きく複雑になってきて、ついていくのが少し大変になってきた。

15.2 Cdr部での再帰
- シンボルマクロが役に立つ例
- シンボルマクロを使用した場合
(defmacro alrec (rec &optional base)
"cltl2 version"
(let ((gfn (gensym)))
`(lrec #'(lambda (it ,gfn)
(symbol-macrolet ((rec (funcall ,gfn)))
,rec))
,base)))
(alrec (and (oddp it) rec) t)

- シンボルマクロを使用しない場合
(defmacro alrec (rec &optional base)
"cltl1 version"
(let ((gfn (gensym)))
`(lrec #'(lambda (it ,gfn)
(labels ((rec () (funcall ,gfn)))
,rec))
,base)))
(alrec (and (oddp it) (rec)) t) ;; シンボルマクロを使う場合に比べて、
;; rec を呼び出すための括弧が余計


15.3 部分ツリーでの再帰
- 関数生成関数を書いて、それにマクロのきれいなインタフェースをかぶせる



On Lisp
Paul Graham

4274066371
オーム社 2007-03
売り上げランキング : 82240
おすすめ平均 star

Amazonで詳しく見る
by G-Tools
by fkmn | 2009-12-09 23:55 | 一人読書会
<< On Lisp 第16章 マク... On Lisp 第14章 ア... >>


とあるWebアプリケーションエンジニアの日記

by fkmn
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX