fmap id = id
を満たす u.map(a ⇒ a) === u
fmap (f . g) = fmap f . fmap g
を満たす u.map(x ⇒ f(g(x))) === u.map(g).map(f)
hs-- List
fmap id [1,2,3] == id [1,2,3]
-- Maybe
fmap id (Just 3) == id (Just 3)
data CMaybe a = Nothing | CJust Int a deriving (Show)