h$ *      !"#$%&'()(C) 2011-2016 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  provisionalportable Trustworthy.?x distributive This is the categorical dual of *.Due to the lack of non-trivial comonoids in Haskell, we can restrict ourselves to requiring a +< rather than some Coapplicative class. Categorically every 9 functor is actually a right adjoint, and so it must be  Representable endofunctor and preserve all limits. This is a fancy way of saying it is isomorphic to (->) x for some x.To be distributable a container will need to have a way to consistently zip a potentially infinite number of copies of itself. This effectively means that the holes in all values of that type, must have the same cardinality, fixed sized vectors, infinite streams, functions, etc. and no extra information to try to merge together. distributive The dual of distribute [(+1),(+2)] 1[2,3]  =  ,  .  = ,  distributive  f =  . - f - f = . .  (/ . f) -  .  f = 0 .  (1 . f)  distributive The dual of   = - 2 .  . 3  distributive  =  . 4 f  distributive The dual of   f = - f .   distributive The dual of   f = - f .  (C) 2011-2016 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  provisionalportable Trustworthy?" distributive derived from a 5 type%This can be used to easily produce a  instance for a type with a 5 instance, data V2 a = V2 a a deriving (Show, Functor, Generic1) instance Distributive V2' where collect = genericCollect# distributive derived from a 5 type!It's often more efficient to use " instead. !"# !"#6      !"#$%&'()*+,-./012324524624728928:2;<2;=2>?2>@24A2BC+distributive-0.6.2.1-Lhog8B4NdHk7JJdshqpkhJData.DistributiveData.Distributive.GenericData.Traversable sequenceAsequencetraversemapM Distributive distributecollect distributeMcollectM cotraversecomapM$fDistributiveM1$fDistributiveRec1$fDistributivePar1$fDistributive:.:$fDistributive:*:$fDistributiveU1$fDistributiveWrappedMonad$fDistributiveComplex$fDistributiveLast$fDistributiveFirst$fDistributiveMax$fDistributiveMin$fDistributiveSum$fDistributiveProduct$fDistributiveDual$fDistributiveReverse$fDistributiveBackwards$fDistributiveProduct0$fDistributiveCompose$fDistributiveIdentityT$fDistributiveReaderT$fDistributive->$fDistributiveTagged$fDistributiveProxy$fDistributiveIdentity GDistributivegcollectgenericCollectgenericDistribute$fGDistributiveM1$fGDistributiveRec1$fGDistributivePar1$fGDistributive:.:$fGDistributive:*:$fGDistributiveU1base TraversableGHC.BaseFunctoridfmapData.Functor.Identity runIdentityIdentityData.Functor.Compose getComposeComposeControl.Applicative unwrapMonad WrapMonadliftM GHC.GenericsGeneric1