第4回やさしいPAIP読書会
paip3.pdf
本文に関する発表に使った資料。需要あるか微妙だけど一応。
(新しく覚えた|間違ってた)から復習すること。
1.クロージャ関係
2.再定義したwhenのマクロ展開
3.再帰と末尾再帰をより深く!
1.クロージャ関係
サンプルコードの説明に限っては問題が無かったが、レキシカル関数周辺が特に間違っていたらしい。もう少し深く学び直そう。
2.whenのマクロ展開
ABCLのwhenをSBCL上で再定義したことを発表した。深町さんを始め、みんなに「さらに、再定義したwhenpとwhenをマクロ展開して比較したら楽しい」と言われたので、実践する。また、「なぜifが組み込み関数なのか?」という弾さん達の話が今一理解できていないので、その辺Twitterで誰かに聞くなり、調べるなりする。「thenとelseが両方評価されたら大変」とか仰ってたので、その辺手がかりに。
3.再帰と末尾再帰
「再帰と末尾再帰の違い」は「処理の実行の保留」の有無だと思っていたが、「再帰呼び出しの元へreturnしなくてよい」事だった。なるほど!R5RSを読んでるときの「末尾再帰の保証」とかが今一理解出来てなかったが、スッキリした。あと、末尾再帰を学んで「多言語のWhileとかと一緒じゃん!」と思ったという話をしたら「その通り!」と言って貰えて良かった。
補足:深町さんの天然ぷりが可愛かった(笑)formatは可愛いですよね。