clojureで関数を合成してみる
2つ以上の関数をcomp関数を使って合成してみる。関数を合成した場合、右から左に関数が適用される。
最初の例は、引数で与えられた1をインクリメントしてから2乗する。
次の例は、引数で与えられた1を2乗してからインクリメントする。
user=> ((comp (fn [x] (* x x)) inc) 1) 4 user=> ((comp inc (fn [x] (* x x))) 1) 2
これは次と同じと言うことで良いのかな。
user=> ((fn [x] (* x x)) (inc 1)) 4 user=> (inc ((fn [x] (* x x)) 1)) 2