(.)新しい問題
それでは,前日出してもらった新しい問題
k x y = f (g x) (h y)
を,x,yを用いずに表してみます.
今回は,
f = (+) g = succ h = abs
とします.
とりあえず,yをなくす.
k x y = (f (g x)) (h y) k x y = ((f (g x)) . h) y k x = (f (g x)) . h
よし,次にxをなくす.
k x = (. h) (f (g x)) k x = (. h) ((f . g) x) k = (. h) . (f . g) k = (. (f . g)) (. h)
ラストは,f,g,hを並べるためにしただけです.
ではこれで合ってるか確認*1.
確認用に,
l x y = f (g x) (h y)
としておきます.
Main> k 4 (-4) 9 Main> l 4 (-4) 9
一致したということは,lとkは同じ動きをしてる事になりますね.
Main> :set +s Main> k 4 (-4) 9 (56 reductions, 73 cells) Main> l 4 (-4) 9 (51 reductions, 65 cells)
リダクションが少し多いのね.
*1:と言いながら,合ってるのを確認した上で書いてるんですけどね:-p