2008年1月8日火曜日

第3講 解釈は評価なり・・・辞書なくして世は渡れず


  • キン肉マンってこのころからあったのか。
  • 「これが関数名と引数並びとからなる2組を簡約化した、いわば題付き並びであることも説明したな」
  • 「Lispの世界ではすべての情報構造がS式で表されなければならない」
  • 「書かれたS式が静の世界とすれば、S式から別のS式を生み出すという計算機構は動の世界じゃ。静と動、この厳しい対立の美しさがすなわちLispなのである」
  • 練習問題
    1. 15
    2. -15
    3. 21
    4. 7
    5. 20
    6. 37
    7. 15
    8. 15
    9. 5
    あってた。
  • '''(aho doji)

    CL-USER> (eval (eval '''(aho doji)))
    (AHO DOJI)
    CL-USER>

  • そういえば、シンボルという用語はでてきてないな。
  • う、(+ '1 '2)がなぜ3になるのかがわからない。。。
  • 「数を評価したらその数自身になるというのもプログラム言語としての1つの約束にすぎないことに注意しておきましょう」
  • 「その辞書とやらもやっぱりS式で表せるんですか? もちろん、そうです」
  • 「しょっちゅう使うものに限って変に乱れてくるんですよね」


  • CL-USER> (setq + 10)
    10
    CL-USER> (+ + +)
    ; Evaluation aborted.
    CL-USER> +
    (SETQ + 10)
    CL-USER> (set '+ 10)
    10
    CL-USER> +
    (SET '+ 10)
    CL-USER> (set '- 10)
    10
    CL-USER> -
    -
    CL-USER> (- - -)
    ; Evaluation aborted.
    CL-USER> (- 1 1)
    0
    CL-USER> (+ 1 1)
    2
    CL-USER> +
    (+ 1 1)
    CL-USER> -
    -
    CL-USER> +
    -
    CL-USER> -
    -
    CL-USER> (progn
    (print nil)
    -)

    NIL
    (PROGN (PRINT NIL) -)
    CL-USER>

    あり? CLのREPLでは、+は直前の式を、-は現在の式を表わすんだ。
  • 練習問題
    1. nil
    2. t
    3. nil
    4. 58
    5. (+ 87 90) -> 177
    6. (+ B) -> (+ '(87 58 90)) -> error
    7. (58 90)
    8. nil
    9. error
    10. t
    11. error
    12. error
    13. error
    6, 9, 11, 12 を間違えた。。。
    そうか。7がIの辞書登録なのか。すると9,11,12は納得。
    6は???
    aclでためしてみると、、、やはりエラーだ。

0 件のコメント: