Functorsの練習

fmapの基本的な使い方

Prelude> fmap (1+) (Just 4)
Just 5

Prelude> fmap (1+) ([1..4])
[2,3,4,5]

ファンクターが関数を持つ場合$で適用する必要がある。

Prelude> fmap (\f -> f 4) (Just (1+))
Just 5

Prelude> fmap (\f -> f 4) ([(1*),(2*),(3*),(4*)])
[4,8,12,16]

Prelude> fmap ($ 4) (Just (1+))
Just 5

Prelude> fmap ($ 4) ([(1*),(2*),(3*),(4*)])
[4,8,12,16]

fmapとNothingを併用した例

Prelude> fmap (+1) Nothing
Nothing

Prelude> fmap ($ 4) Nothing
Nothing

ちょっとややこしい例(実用性はない?)

Prelude> fmap ($ 5) (fmap (+) (Just 3))
Just 8

Prelude> fmap ($ 5) (fmap (+) [1..4])
[6,7,8,9]