01:47:08 <g000001> usaturn: 網羅的な解説という感じなんですが、色々詰め込んでるって感じですねー
01:48:00 <g000001> リファレンス的に何度も振り返って参照するような読み方を想定してるのかもしれません
08:11:25 <usaturn> ほうほう、なるほど
16:56:50 [g000007'in]
16:58:01 <g000007> 今日もIRC読書会始めます
16:58:27 <g000007> Successful Lisp / David B. Lamkinsの
16:58:33 <g000007> ((( Chapter 4 - Mastering the Essentials )))
16:58:38 <g000007> から読みます
17:01:26 <g000007> http://psg.com/~dlamkins/sl/chapter04.html
17:03:23 <g000007> 4章は、3章でやったことを、ハンズオン形式的にぽちぽち打ち込みつつ進めるようです
17:06:39 <g000007> (((( Hands-on! The "toploop" ))))
17:06:55 <g000007> トップレベルのループ/REPLの説明
17:07:15 <g000007> おおまかな仕組みの説明です
17:07:29 <g000007> (((( Spotting and avoiding common mistakes ))))
17:10:24 <g000007> replでの入力の受け付けについてと、初心のうちはハマりやすい、クォートの説明です
17:10:45 <g000007> (((( Defining simple functions ))))
17:16:28 <g000007> 関数定義と、lambdaリスト、多値のおさらいというところです
17:16:37 <g000007> (((( Using global variables and constants ))))
17:21:56 <g000007> 大域変数の定義方法で、setq・defvar・defparameter・defconstantの説明です
17:22:14 <g000007> (((( Defining recursive functions ))))
17:31:08 <g000007> 再帰関数の定義についてです。ベースケース大事っていうところでしょうか。traceの使い方も紹介されています
17:31:47 <g000007> (((( Tail recursion ))))
17:41:47 <g000007> 末尾再帰についてですが、効率や処理系によって最適化される件について触れられています
17:42:45 <g000007> 最適化されてしまうと、バックトレースの情報も落ちてしまうことについて触れられているのは、割と珍しいというか、細かいかもしれないです
17:43:43 <g000007> allegro cl等では、情報を保持するような仕組みがあったりもしますが、この辺は、末尾呼び出しの最適化と同じく処理系依存ですね
17:44:06 <g000007> (((( Exercises in naming ))))
17:47:21 <g000007> 変数等の名前付けについてです。*foo*とか、+foo+とか、%fooについて
17:47:34 <g000007> (((( Lexical binding, and multiple name spaces ))))
17:53:21 <g000007> レキシカル変数のスコープについてと、Common Lispのように同じシンボルで変数と関数を別に保持できる所謂lisp2の説明です
17:54:00 <g000007> わざと複雑な例を挙げていますが、確かにこれを理解すれば、実用的に大抵のものは問題ないとは思います
17:54:10 <g000007> (((( Reading, writing, and arithmetic ))))
18:08:03 <g000007> 入出力でこれまでの説明に加えて、with-open-fileの説明と、後半は数の扱いについてです
18:08:34 <g000007> ((( Other data types )))
18:10:20 <g000007> その他各種データ型のコード例一覧というところです
18:11:28 <g000007> 使い方を覚えていないうちは、こういうテンプレートは良いかもしれないですね
18:11:43 <g000007> (((( Simple macros ))))
18:20:17 <g000007> テンプレート的に穴を埋めるようなシンプルなマクロの説明です。変数捕捉の問題についても軽く触れられています
18:20:25 <g000007> (((( Reader macros ))))
18:24:06 <g000007> リーダーマクロの説明ですが、例が面白くて、
18:25:43 <g000007> ドルのように、セントも実際に使う場合、
18:26:17 <g000007> $9.95 * 100のような計算で、(* 100 9.95) => 994.9999999999999
18:26:32 <g000007> のように誤差が出るのを避けたいという例です
18:27:23 <g000007> $にリーダーマクロを設定して、$9.95と書いた場合は、100倍して切り捨てることによって誤差が出ないようにする、という内容です
18:28:41 <g000007> $9.95と書いた場合、 995となるので、セント単位の整数で扱うことにするようです
18:32:29 <g000007> ということで、4章は終わりです。サンプルコードが多いのでチートシート的に使えるかもしれないですね
18:33:19 <g000007> 明日は5章から読みます
18:33:27 [g000007'out] ; Quit: ERC Version 5.1.2 $Revision: 1.796.2.4 $ (IRC client for Emacs)