01:15:59 [saia'out] ; Ping timeout: 240 seconds
07:20:57 [saia'in]
08:56:25 [saia'out] ; Ping timeout: 256 seconds
17:38:04 [saia'in]
19:47:47 [saia'out] ; Ping timeout: 240 seconds
22:17:18 [g000023'in]
22:17:27 <g000023> 今日も Successful Lisp / David B. Lamkins ぼっち読書会やります
22:17:36 <g000023> 一回抜かしてしまいました
22:17:49 <g000023> http://psg.com/~dlamkins/sl/chapter21.html
22:17:55 <g000023> 今回は21章です
22:18:07 <g000023> (((Chapter 21 - Fancy Tricks with Function and Macro Arguments)))
22:19:14 <g000023> 21章はラムダリストパラメータ関係の話題のようです
22:19:22 <g000023> ((((Keywords let you name your parameters))))
22:28:23 <g000023> 以前にも解説されていたキーワード引数のより詳しい説明というところですね
22:28:30 <g000023> ((((Default values for when you'd rather not say))))
22:30:09 <g000023> &optionalや、&keyでは、実引数が与えられなければデフォルト値が使われるんですが、
22:31:54 <g000023> これがデフォルト値がnilだった場合、実引数でnilが渡されたのか、それとも渡されなかったからデフォルトのnilなのか、値だけでは、区別できなかったりするのですが、
22:32:42 <g000023> これを解決する仕組みがあって、一般にsupplied-pと呼ばれています
22:35:09 <g000023> ((((Add some structure to your macros by taking apart arguments))))
22:40:58 <g000023> defmacroのラムダリストは一回り強力で、リストを分解する機能があります
22:41:19 <g000023> その機能をマクロを定義するコードを例に解説しています
22:43:56 <g000023> また、destructuring-bindは、このdefmacroのラムダリストの機能があるので、リストを分解したりキーワード引数を扱えたりします
22:44:36 <g000023> 昨日やらなかったので、次22章いってみたいと思います
22:44:38 <g000023> (((Chapter 22 - How to Find Your Way Around, Part 3)))
22:47:16 <g000023> 以前traceや、describe等の標準ツールが解説されましたが、
22:47:51 <g000023> 処理系ベンダーが付けてくるような定番ツールを紹介しようというところみたいです
22:48:01 <g000023> ((((Class and method browsers help you find your way in a sea of objects))))
22:50:40 <g000023> ここでは、クラスブラウザとメソッドブラウザが紹介されています
22:51:38 <g000023> クラスブラウザはクラスの継承関係の階層を図で表示してくれるもの、メソッドの方は、メソッドコンビネーションの一覧等色々な形で表示してくれるものの紹介です
22:51:53 <g000023> これは、自分の使っている処理系を探してみるしかないですね
22:52:22 <g000023> GUIなIDEを提供している処理系(LispWorksやAllegro CL)ではメニューを探すとあります
22:53:42 <g000023> SBCL等だとそういうツールを見付けてきて使うしかないですね。clim-listnerにはクラスブラウズの機能があったりするので、こういうのを使うことになると思います
22:54:05 <g000023> ((((ADVISE lets you modify a function's behavior without changing the function))))
22:56:25 <g000023> advice機能の解説です。emacs lispにはadviceがありますが、lispには昔からある機能です
22:57:09 <g000023> clにはdefmethodがある為かadvice機能はありませんが、大抵の処理系にはadvice機能があるようで、trace等はこの機能で実装されていることが多いようです
22:57:19 <g000023> ((((WATCH lets you open a window on interesting variables))))
22:58:34 <g000023> WATCHは指定した変数を観測するツールのようです。
22:58:53 <g000023> これはあったら便利そうですが、提供しているベンダは多くないとのこと。
22:59:18 <g000023> 具体的には、どの処理系に付属してくるんですかねー。MCLをちょっと調べてみたいところです
22:59:41 <g000023> ということで、21/22章は終わりです。次回は23章からです
22:59:47 [g000023'out] ; Quit: (quit)