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が作れる
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
これはHaskellのすべてのFunctor fに
dayToCompose :: Day f f a -> f (f a)
が実装できるから。
join :: f (f a) -> f a
から
apply :: Day f f a -> f a
apply = join . dayToCompose
が作れるのとは逆に、
coapply :: f a -> Day f f a
から
duplicate :: f a -> f (f a)
duplicate = dayToCompose . coapply
が作れる