03:24:40 [r_takaishi_'out] ; Ping timeout: 246 seconds
03:38:35 [r_takaishi_'in]
17:39:29 [g000018'in]
17:40:45 <g000018> 今日も一人CL読書会やります
17:41:07 <g000018> Successful Lisp / David B. Lamkins の 16章です
17:41:13 <g000018> (((Chapter 16 - How to Find Your Way Around, Part 2)))
17:45:16 <g000018> また標準装備のツールの使い方というところです
17:45:22 <g000018> ((((DISASSEMBLE: I always wondered what they put inside those things...))))
17:58:09 <g000018> disassembleの説明ですが、結構細かいですね
17:58:38 <g000018> successful lispでは、mclを使ってるみたいですが、mclだと、
17:59:30 <g000018> アセンブリがlapという型式で表示されます。MCLはpower pcでしか動かないですが、MCLから派生したClozure CLも同じです
18:00:38 <g000018> どういうところで使うかの説明と、disassembleで確認しつつの最適化の簡単な手順の説明というところでしょうか
18:01:11 <g000018> declaration-informationで、セッティングが確認できるという説明もありますが、これは、書いてるとおり、ANSIにはないもので、CLtL2にあったもののようです
18:01:45 <g000018> CLtL2の関数をサポートしているような処理系では存在するかと思います。SBCLだと
18:01:46 <g000018> sb-cltl2:declaration-information
18:01:48 <g000018> にあります
18:02:15 <g000018> ((((BREAK and backtrace: How did I end up here?))))
18:08:48 <g000018> (break)の使い方の説明です
18:09:20 <g000018> (break)に遭遇するとデバッガに落ちるということと、実行を再開できるということ、
18:09:51 <g000018> また再開の前に変数を書き換えてみて様子をみる、etcの使い方と、
18:10:16 <g000018> 条件の分岐のデバッグなどで有用であることが説明されています
18:10:53 <g000018> ((((TRACE and STEP: I'm watching you! ))))
18:14:04 <g000018> (trace)と(step)の説明です
18:14:22 <g000018> どちらもデバッグに便利ですよというところです
18:14:42 <g000018> stepは処理系によって結構動きが違ってくることも解説されています
18:15:32 <g000018> Clozure CLや、SBCLのようにコンパイラ指向だと、余計な情報を捨ててしまうので、インタプリタでの実行に比べて、stepがいまいち、ということも割とあるようです
18:16:12 <g000018> break・trace・stepあたりは、処理系のIDEでもサポートされていることがあって
18:16:42 <g000018> LispWorksやAllegro CLのIDEでは、エディタ上でbreakポイントをマウスで設定することもできます
18:16:59 <g000018> step実行については、allegro clが色々頑張っているようです
18:17:38 <g000018> ということで、16章は終りです。次回は17章から読んでいきます
18:17:44 [g000018'out] ; Quit: (quit)