úÎP ’portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered This is the categorical dual of  Traversable. However, there appears I to be little benefit to allow the distribution via an arbitrary comonad  so we restrict ourselves to . Minimal complete definition:  or  HTo be distributable a container will need to have a way to consistently I zip a potentially infinite number of copies of itself. This effectively F means that the holes in all values of that type, must have the same E cardinality, fixed sized vectors, infinite streams, functions, etc. 4 and no extra information to try to merge together.  The dual of   distribute = collect id   collect = distribute . fmap f  9 distributeM = fmap unwrapMonad . distribute . WrapMonad  " collectM = distributeM . liftM f       distributive-0.2.2Data.DistributiveData.Traversablesequence Distributive distributecollect distributeMcollectM cotraversecomapMbaseGHC.BaseFunctor$fDistributiveProduct$fDistributiveCompose$fDistributiveIdentityT$fDistributiveReaderT$fDistributive(->)$fDistributiveIdentity