# Haskellで部分適用と関数合成のかんたんなサンプル 以前書いてた記事から。foldrをmapにしただけ。 まず、普通に書くと。 ```haskell main = print $ fizzbuzz [1..100] fizzbuzz = map (\e ->   case e of     e | (e `mod` 15) == 0 -> "fizzbuzz"       | (e `mod` 5)  == 0 -> "buzz"       | (e `mod` 3)  == 0 -> "fizz"       | otherwise -> show e) ``` 15, 5, 3で割り切れるところのロジックをまとめる。 ```haskell main = print $ fizzbuzz [1..100] fizzbuzz = map (\e ->   let p n = (e `mod` n) == 0   in     case e of       e | p 15 -> "fizzbuzz"         | p 5  -> "buzz"         | p 3  -> "fizz"         | otherwise -> show e) ``` ここ。 ```haskell p n = (e `mod` n) == 0 ``` modはバッククォートで配置を換えてるので戻す。 割る方が先なので注意。 ```haskell p n = (mod n e) == 0 ``` `==` も普通の関数の順番に。 ```haskell p n = (== 0 (mod n e)) ``` ```haskell p n = (== 0 (mod n e)) ``` ```haskell main = print $ fizzbuzz [1..100] fizzbuzz = map (\e ->   let p = (== 0) . (mod e)   in     case e of       e | p 15 -> "fizzbuzz"         | p 5  -> "buzz"         | p 3  -> "fizz"         | otherwise -> show e) ```