Scheme事始め5:四則演算を統一的に扱う

  • 四則演算をラムダ関数として扱いなおしてみる
  • "+,-,*,/"の4演算はすべて2項演算なので、「演算記号」を"#"とでも表すとすれば
(# 3 4)
  • のように書くこともできる
  • 問題は、どうやって統一的に扱うのにどうするか
    • 以下はその例。infixという関数をラムダ関数定義する。そのラムダ関数は2項とその間の演算子をそれぞれ、a bとprocとして定める
> (define infix
    (lambda (a proc b)
      (proc a b )))
> (infix 3 + 4)
7
> (infix 3 * 4)
12
> (infix 3 - 4)
-1
> (infix 3 / 4)
3/4