Getting Started in *LISP (25) — #:g1

Posted 2010-06-05 02:27:00 GMT

今回から4章です。
3章の最後の前振りによれば、4章は、エラーハンドリングとデバッガの使用方法についての説明とのことでした。

When Things Go Wrong

予期せぬエラーに対してデバッガが教えてくれる情報や、エラー/警告メッセージなどを手掛かりにどう対処してゆくかを解説するのがこの章の目的とのこと
この章のテキストでは、Sun Common Lispのメッセージ表示を使うが、処理系によって表示に違いがあるとのことですが、SunもCLの処理系を出してたんですね。(パッケージ名がlclなので、中身はLucid CLのようですが)

4.1 Warning Messages

警告について
警告メッセージにも色々ありますが、まずは、
;;; GC: 174988 words [699952 bytes] of dynamic storage in use.
;;; 644210 words [2576840 bytes] of free storage available.
のようなGCの警告メッセージから。
これはGCが稼動しているということで、処理系によっては、(setq sys::*gc-silence* t)等で黙らせることができることが解説されています。
今どきの処理系ではCMUCLがGCの稼働状況が激しく表示されますが、これも(setq *gc-verbose* nil)で静かにできるようです。
次に、
> (defun simple (x) (+!! x 2))
> (compile 'simple)
;;; Warning: *Lisp Compiler: While compiling function SIMPLE:
;;;          The expression (+!! X 2) is not compiled because
;;;          the compiler cannot find a declaration for X.
のようなもので、コンパイラがすべてをコンパイルするのには情報が足りなかったため部分的にコンパイルできなかったというようなメッセージ。
可能な限り効率的というわけではないけれど、関数はコンパイルできているというもので、こういった類のメッセージは、無視できる。
後の*Lispコンパイラの章で詳しく解説するとのこと。
次回、4.2のエラーメッセージの解説から再開です。

comments powered by Disqus