Scheme手習い Chapter 6

この章では抽象化っぽい事をやってるのかな?とりあえず気付き等を。
この章では算術式(簡単な計算式とか?)をS式で表現して、計算式を扱う手続きを抽象化

気付き

算術式だからarithmetic expressionでaexp、number expressionでnexp?

  • S式で算術式を表現すると嬉しい事
    • S式なので関数の引数とする事が可能である。
    • 構造的にn + 3と(n + 3)が似てる。(カッコでくくってあるだけだもんね)
    • 先頭に+を持ってきたら(+ n 3)まんまLisp
  • numbered?は
    • 演算子の+, *, exptを除いて数だけを含んでいるかを調べる
  • value
    • nexpを評価出来たw すごいw
    • 補助関数を使うと定義がすっきり。

感想

  • ちょっとテストかきづらかったかも。算術式を別形式で書いたり、戻したりで…
  • 簡単な算術式なら演算出来るようになった!ふつうの計算なら自分の定義したやつで出来る。嬉しい。
  • 実際のデータ構造から演算子や被演算子を取り出す手続きを補助関数を定義する事で抽象化しているのかな?
  • 算術式のフォーマットを変えても補助関数を書きなおすだけでvalueが動いた。すごい。
  • 最終的に数も抽象化して、'()の含まれてるリストで数を表現しててなんじゃこりゃと思ったw