moduleData.CopointedwhereimportControl.ComonadimportData.DefaultimportData.Functor.IdentityimportData.Functor.ComposeimportData.Functor.CoproductimportData.TreeimportData.MonoidasMonoidimportData.SemigroupasSemigroupimportControl.Monad.Trans.IdentityimportqualifiedControl.Monad.Trans.Writer.LazyasLazyimportqualifiedControl.Monad.Trans.Writer.StrictasStrictimportqualifiedControl.Comonad.Trans.Discont.LazyasLazyimportqualifiedControl.Comonad.Trans.Discont.MemoasMemoimportqualifiedControl.Comonad.Trans.Discont.StrictasStrictimportqualifiedControl.Comonad.Trans.Env.LazyasLazyimportqualifiedControl.Comonad.Trans.Env.StrictasStrictimportqualifiedControl.Comonad.Trans.Store.LazyasLazyimportqualifiedControl.Comonad.Trans.Store.MemoasMemoimportqualifiedControl.Comonad.Trans.Store.StrictasStrictimportData.List.NonEmpty(NonEmpty(..))-- | 'Copointed' does not require a 'Functor', as the only relationship-- between 'copoint' and 'fmap' is given by a free theorem.classCopointedpwherecopoint::pa->ainstanceCopointedIdentitywherecopoint=runIdentityinstanceDefaultm=>Copointed((->)m)wherecopointf=fdefinstanceCopointed((,)a)wherecopoint=sndinstanceCopointed((,,)ab)wherecopoint(_,_,a)=ainstanceCopointed((,,,)abc)wherecopoint(_,_,_,a)=ainstanceCopointedTreewherecopoint=rootLabelinstance(Copointedp,Copointedq)=>Copointed(Composepq)wherecopoint=copoint.copoint.getComposeinstance(Copointedp,Copointedq)=>Copointed(Coproductpq)wherecopoint=coproductcopointcopointinstanceCopointedm=>Copointed(IdentityTm)wherecopoint=copoint.runIdentityTinstanceCopointedm=>Copointed(Lazy.WriterTwm)wherecopoint=fst.copoint.Lazy.runWriterTinstanceCopointedm=>Copointed(Strict.WriterTwm)wherecopoint=fst.copoint.Strict.runWriterTinstanceCopointedDualwherecopoint=getDualinstanceCopointedSumwherecopoint=getSuminstanceCopointedNonEmptywherecopoint~(a:|_)=ainstanceCopointedSemigroup.Firstwherecopoint=Semigroup.getFirstinstanceCopointedSemigroup.Lastwherecopoint=Semigroup.getLastinstanceCopointedSemigroup.Maxwherecopoint=Semigroup.getMaxinstanceCopointedSemigroup.Minwherecopoint=Semigroup.getMininstanceCopointed(Lazy.DiscontTsw)wherecopoint(Lazy.DiscontTfw)=fwinstanceCopointed(Strict.DiscontTsw)wherecopoint(Strict.DiscontTfw)=fwinstanceCopointed(Memo.DiscontTsw)wherecopoint=extractinstanceCopointedw=>Copointed(Lazy.EnvTew)wherecopoint=copoint.Lazy.lowerEnvTinstanceCopointedw=>Copointed(Strict.EnvTew)wherecopoint=copoint.Strict.lowerEnvTinstanceCopointedw=>Copointed(Lazy.StoreTsw)wherecopoint(Lazy.StoreTwfs)=copointwfsinstanceCopointedw=>Copointed(Strict.StoreTsw)wherecopoint(Strict.StoreTwfs)=copointwfsinstanceCopointedw=>Copointed(Memo.StoreTsw)wherecopoint=copoint.Memo.lowerStoreT