まずyをひっぱがす
f x y = (x + 1) * (y `div` 2)
演算子表現を関数表現に直す
f x y = (*) ((+) x 1) (div y 2)
yを含む項を$演算子で分離
f x y = (*) ((+) x 1) $ (div y 2)
yを含む項の外側の括弧をはずす($で分離したので出来る)
f x y = (*) ((+) x 1) $ div y 2
yの外側に括弧が無くなったのでyを最後尾に持ってくる(この場合flip使えばいい)
f x y = (*) ((+) x 1) $ flip div 2 y
yが最後尾に来たので$演算子で分離
f x y = (*) ((+) x 1) $ flip div 2 $ y
左の$演算子を関数合成の(.)演算子に変更する
f x y = (*) ((+) x 1) . flip div 2 $ y
ひとつの合成関数になったのでyをひっぱがせる
xをひっぱがす、さっきと同様にして演算子表現を関数表現に直す
f x = (.) ((*) ((+) x 1)) (flip div 2)
xを含む項を最後尾に持ってくる(この場合はflip使えばよい)
xを含む項を$演算子で分離
xを含む項の一番外側の括弧をはずす($で分離したので出来る)
xを含む項が小さくなったので更にxを含む項を$演算子で分離
同様にxを含む項の一番外側の括弧をはずす($で分離したので出来る)
xを含む項を最後尾に持ってくる(この場合は(+)は引数順を逆にしても結果は同じ(適用順的には意味は変わるが))
xを$演算子で分離
左方のすべての$演算子を関数合成の(.)演算子に変更する
ひとつの合成関数になったのでxをひっぱがせる
完成!
最終更新:2019年12月28日 07:38