Haskellの擬似関数


シミュレーション関数の数学的定義は以下の通りである.
  C   D    ,  C   D     F
      X ∈ C        F(X) ∈ D  ,
      f:X ⟶ Y ∈ C        F(f):F(X) ⟶ F(Y) ∈ D  ,

Haskellの擬似関数はclassであり,主な抽象関数はfmapである.
fmap        :: (a -> b) -> f a -> f b

HaskellはFunctorの注釈でHaskell擬似関数の2つの規則に言及した.
1つ目は、マッピングとして関数idを使用する場合、パラメータシミュレーション関数として返されるべきです.
Haskell       
fmap id a = a

        
      X ∈ C,   F(id(x)) = id(F(x))

第2条は、マッピングとして組合せ関数を用い、得られた結果は、同組合せ関数の関数が順次マッピング関数としての結果と同じであることを保証しなければならない.
Haskell      
fmap (f . g) = fmap f . fmap g
  
fmap (f . g) F = fmap f (fmap g F)

        
F(f.g) = F(g).F(f)