これは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
が作れる