15/07/10 23:42:39.10 ucCSbhAH.net
>> 919
Rが具体的な型で、Aがなんでもいい型、って言いたいわけだね。
(A -> R) はモナドにならないよ。というか、Functor(共変関手)にならない。
代わりにContravariant(反変関手)になる。
newtype Op a b = Op { getOp :: b -> a }
instance Contravariant (Op a) where
contramap f g = Op (getOp g . f)
(以上contravariantパッケージより)
共変関手にならない理由は、このサイトがわかりやすい。
URLリンク(kinokkory.hatenablog.com)