Instructor's Manual to accompany "Structure and Interpretation of Computer Programs"で気になった所の覚書き

1.1 について

  • Scheme を数学的なシステムであるかのように考える(ex. 代数)
  • 次のような説明をしないように注意!
    • ex. (square (+ x 1)) を評価するには、x をインクリメント(+1)してから square を呼ぶ」
      • 式は常に左側から評価される
  • Basic, Pascal, C のような言語でプログラムしたことがある人への注意
    • 文法的な規則を Scheme に押し付けないように注意する
      • ex. 次のようなプロシージャを書こうとする
(define (sum-of-squares x y)
  (square x)
  (square y)
  (+ x y))
  • Scheme を式のように見られないとき、語彙と文法の問題について混乱しがちである
    • ex. 演算子オペランドの間のスペースを省略する
    • ex. 余分な括弧 () をまき散らす (sprinkle)
      • Scheme は(Basic等の言語とは)違うので、学んだことを覚えるように教える
  • 先入観はなかなかとれないので、これらを常に注意する

1.1.1 について

  • Scheme での原始的な式(primitive expression) は定数 (constant) または可変の名前である。(ここでの primitive の用法は Scheme標準 ではないけれど)
  • 結合 (combination) は常にプロシージャ・アプリケーション (procedure application) を示している
    • 括弧 () はその意味付けをかえない限り、省略したり挿入したりする事はできない
    • 括弧でグルーピングするような言語を使ったことがある学習者はこの点で混乱することがある
  • 用語について
    • 文法的な要素(結合、式、演算子オペランド)と言語中の操作(手続き(procedure)と与えられた引数(arguments))を区別するように注意
    • 定義 (definition) を式として参照しないように注意する
      • Scheme標準 において、定義は違ったカテゴリとして扱われる
        • 定義が出てくる場所の制限のため(1.1.3 の説明のように define 以外の所では定義できない)
  • 符号付き数字
    • 学習者は符号付き数字の扱いで時々混乱する
    • 加算と減算の演算子とは別
    • ex. 符号と数字の間にはスペースは入らない。3 は +3 と同じ。
    +3
    3
 
    -3
    -3

    (+ -3 -5)
    -8

今日はここまで。