SICP問題1.4
(define (a-plus-abs-b a b) ((if (> b 0) + -) a b))
これの振る舞いを説明しろという問題
この手続きは b>0 だった場合、 (> b 0)が#tとなり、+が展開される。つまり、 1: ((if (> b 0) + -) a b)) 2: ((if #t + -) a b)) 3: (+ a b) b<=0だった場合、 (> b 0)が#fとなり、-が展開される。つまり、 1: ((if (> b 0) + -) a b)) 2: ((if #f + -) a b)) 3: (- a b) こんな感じに内部的に振舞う。 ようするに、(a-plus-abs-b a b) を実行すると、a+|b|の計算値が返ってくる。
これであってるのか?
SICPって問題はあるけど解答は無いんだよなぁ。