Functor

Functor クラス

class Functor f where
    fmap :: (a -> b) -> f a -> f b

Functor 則

第一法則

id でファンクター値を写した場合、ファンクター値が変化してはいけない
fmap id = id

第二法則

2つの関数 f と g について、f と g の合成関数でファンクター値を写したものと、まず g 次に f でファンクター値を写したものが等しくなければならない
fmap (f . g) x = fmap f (fmap g x)

参考資料