Applicativeを
pure :: Identity ~> fapply :: Day f f ~> f
と捉えて、その相対を
copure :: f ~> Identitycoapply :: f ~> Day f f
としたものを考えていたのだが、
これ、Comonadを含意する
「MonadはApplicativeを含意する」という方向とは逆になっている。「"Applicativeの双対"はComonadを含意する」
これはHaskellのすべてのFunctor fにdayToCompose :: Day f f a -> f (f a)が実装できるから。
join :: f (f a) -> f aからapply :: Day f f a -> f aapply = join . dayToComposeが作れるのとは逆に、
coapply :: f a -> Day f f aからduplicate :: f a -> f (f a)duplicate = dayToCompose . coapplyが作れる
*双対
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
「MonadはApplicativeを含意する」という方向とは逆になっている。「"Applicativeの双対"はComonadを含意する」