Lisp in One Day 2007

  • 参加しました.メモを読みたいと言われたので公開してみます.あいにく睡眠不足で一日中眠くて途中落ちたりしてたので,内容の正確さと網羅性は期待しないで下さい.
  • Paradigm of AI Programming isbn:9781558601918 (by Peter Norvig) はとても良い本らしい.
    • MSI では新入社員にまず最初の300ページ位をやらせるらしい.
    • P.Graham disられまくり.
      • On Lisp isbn:9780130305527 とかと比べるのは失礼だ.
      • P.Graham は CL で Scheme のコードを書く.
      • Paradigm of AI Programming に書いてある Prolog の処理系と On LispProlog の処理系の実行速度を比べてみろ.
  • Symbol は奥が深い
    • 1st Class Symbol
    • パッケージとシンボル
  • CL には restart という概念がある.
  • スペシャル変数: * * で囲う
  • Symbol と 変数 の違い
  • CLは Name Space を 5つ くらい持っている
    • 変数, 関数, ラベル, タイプ, パッケージ
  • setq と setf
  • special operator ;; 引数を評価するかしないか
  • 関数定義
  • defvar : 名前をスペシャル変数の名前として使いますよという宣言
    • special 変数をどーしても変えたくなったら defparameter を使う
    • special 変数は他の言語に対応するものが無い..
      • (defvar *p* ...) と必ず書く.
  • 関数オブジェクトと関数ポインタ
  • エラーのハンドリング
    • 副作用を何とかしたい -> unwind-protect とかを使う.
  • (funcall #'+ 1 2 3) == (apply #'+ 1 2 3 '())
    • apply は最後にリストが必ず必要.
  • "*" は 直前に評価されたもの
    • "**", "***" まである. ;; GCの最適化で一度はハマるらしい
  • ANSI-SPEC を良く読め. ボキャブラリが豊富になる.自然言語と同じ.
  • Macro への理解を深めよ. Syntaxの抽象化に使う.
  • else 部のない if を書くな.-> when を使え.
    • (Franzの) if* を使うな.
  • scope と extent. ANSI CL 2nd Ver.にちゃんと載っている.
  • SchemeCommon Lisp は別ですよ.
  • EVAL のタイミング.
  • Condition Handling.
  • format output.
  • fill-pointer array みたいなのはCL以外になかなか無い.
  • SICM本 isbn:9780262194556 ベタぼめ.Scheme がハマる領域.
  • Fortlan の処理系無くなっちゃったから何とかしてくれ.-> CL で.
  • CL HyperSpec, CLv2, Paradigm of AI Programming の三冊を完全に読み終わったらエキスパート
  • CLOSの本(絶版). MOP の本.
  • On Lisp isbn:9780130305527 さらにdisられまくり.
  • Common Lisp 入門 isbn:9784000076852
  • NIL, (), '()
    • () はフォームで使う.
  • fixnum CLが最も効率良く扱える数値.
  • クロージャは高くつく.
  • mlisp と alisp