Hatena::Groupsicp

SICP学習ノート@inoshirou

2010-02-20

SICP始める

02:36

環境

デザインは表紙の色にあわせてなんとなく紫系にしてみた。

最初~1.1.3

抽象化

  • 名前と値を関連づけるのも単純な抽象化の一つ

  • 数字は式
  • +とか-とか*とかも式
gosh> +
#<subr +>
gosh> -
#<subr ->
gosh> /
#<subr />
gosh> *
#<subr *>

subrって何?後で調べる。


演算子と被演算子

前置記法

  • 引数を自由にとれる
  • 入れ子構造を許す
gosh> (+ 1 2)
3
gosh> (+ 123 231)
354
gosh> (+ 39 (* 2 4))
47
gosh> (+ 2 2 2)
6
gosh> (+ 349 (+ 92 923) (* 93 99) (- 83 (* 909 890)))
-798356

特殊形式

  • defineを用いると、再利用可能な式を定義できる。これは抽象化だよね。
  • defineは特殊形式(special forms)のひとつ
gosh> (define hoge (* 10 10))
hoge
gosh> hoge
100

メモ

前置記法の長い式書いてそれを自分で計算しようとすると、「値が上方に湧き出す」ように計算しているのに気付く。

シンプルで当たり前の事なんだろうけど実際にやってみると分かりやすい。

「入れ子にする(nested)」で思い出したけど、以前仕事した人でタブでインデントを付けることを「ネストする」って言ってた人がいたなあ。

subr = サブルーチン

Gauche組み込みの手続きがsubrらしい。