IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

Constantのファンクタ則を例を使って確認

インポート

*Main> import Data.Functor.Constant

型の確認

*Main Data.Functor.Constant> :t Constant
Constant :: a -> Constant a b

*Main Data.Functor.Constant> Constant 1
Constant 1

*Main Data.Functor.Constant> let x = Constant 1

*Main Data.Functor.Constant> getConstant x
1

*Main Data.Functor.Constant> :t x
x :: Num a => Constant a b

functorの確認

*Main Data.Functor.Constant> fmap (+2) x
Constant 1
*Main Data.Functor.Constant> fmap (+5) x
Constant 1

fmap (f.g) = fmap f. fmap gの例による確認

*Main Data.Functor.Constant> let f = (* 5)
*Main Data.Functor.Constant> let g = (+ 2)
*Main Data.Functor.Constant> 
*Main Data.Functor.Constant> fmap f . fmap g $ x
Constant 1
*Main Data.Functor.Constant> fmap (f . g)  x
Constant 1

fmap id = id の確認

*Main Data.Functor.Constant> fmap id x
Constant 1
*Main Data.Functor.Constant> id x
Constant 1