# 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)
```