universe-instances-extended 1.0.0.1 → 1.1
raw patch · 3 files changed
+75/−62 lines, 3 filesdep +universe-basedep −universe-instances-basedep −voiddep ~adjunctionsdep ~basedep ~comonadnew-uploaderPVP ok
version bump matches the API change (PVP)
Dependencies added: universe-base
Dependencies removed: universe-instances-base, void
Dependency ranges changed: adjunctions, base, comonad
API changes (from Hackage documentation)
- Data.Universe.Instances.Extended: instance (Representable f, Finite (Rep f), Ord (Rep f), Finite a) => Finite (Co f a)
- Data.Universe.Instances.Extended: instance (Representable f, Finite (Rep f), Ord (Rep f), Universe a) => Universe (Co f a)
- Data.Universe.Instances.Extended: instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Finite a) => Finite (TracedT s f a)
- Data.Universe.Instances.Extended: instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Universe a) => Universe (TracedT s f a)
- Data.Universe.Instances.Extended: instance Finite Void
- Data.Universe.Instances.Extended: instance Universe Void
+ Data.Universe.Instances.Extended: cardinality :: Finite a => Tagged a Natural
+ Data.Universe.Instances.Extended: instance (Data.Functor.Rep.Representable f, Data.Universe.Class.Finite (Data.Functor.Rep.Rep f), GHC.Classes.Ord (Data.Functor.Rep.Rep f), Data.Universe.Class.Finite a) => Data.Universe.Class.Finite (Data.Functor.Rep.Co f a)
+ Data.Universe.Instances.Extended: instance (Data.Functor.Rep.Representable f, Data.Universe.Class.Finite (Data.Functor.Rep.Rep f), GHC.Classes.Ord (Data.Functor.Rep.Rep f), Data.Universe.Class.Universe a) => Data.Universe.Class.Universe (Data.Functor.Rep.Co f a)
+ Data.Universe.Instances.Extended: instance (Data.Functor.Rep.Representable f, Data.Universe.Class.Finite s, GHC.Classes.Ord s, Data.Universe.Class.Finite (Data.Functor.Rep.Rep f), GHC.Classes.Ord (Data.Functor.Rep.Rep f), Data.Universe.Class.Finite a) => Data.Universe.Class.Finite (Control.Comonad.Trans.Traced.TracedT s f a)
+ Data.Universe.Instances.Extended: instance (Data.Functor.Rep.Representable f, Data.Universe.Class.Finite s, GHC.Classes.Ord s, Data.Universe.Class.Finite (Data.Functor.Rep.Rep f), GHC.Classes.Ord (Data.Functor.Rep.Rep f), Data.Universe.Class.Universe a) => Data.Universe.Class.Universe (Control.Comonad.Trans.Traced.TracedT s f a)
Files
- Data/Universe/Instances/Extended.hs +0/−38
- src/Data/Universe/Instances/Extended.hs +37/−0
- universe-instances-extended.cabal +38/−24
− Data/Universe/Instances/Extended.hs
@@ -1,38 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-module Data.Universe.Instances.Extended (- -- | Instances for 'Universe' and 'Finite' for function-like functors and the empty type.- Universe(..), Finite(..)- ) where--import Data.Void-import Control.Comonad.Trans.Traced-import Data.Functor.Rep-import Data.Universe.Instances.Base--instance Universe Void where universe = []---- We could do this:------ instance Universe (f a) => Universe (Co f a) where universe = map Rep universe------ However, since you probably only apply Rep to functors when you want to--- think of them as being representable, I think it makes sense to use an--- instance based on the representable-ness rather than the inherent--- universe-ness.------ Please complain if you disagree!-instance (Representable f, Finite (Rep f), Ord (Rep f), Universe a)- => Universe (Co f a)- where universe = map tabulate universe-instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Universe a)- => Universe (TracedT s f a)- where universe = map tabulate universe--instance Finite Void--instance (Representable f, Finite (Rep f), Ord (Rep f), Finite a)- => Finite (Co f a)- where universeF = map tabulate universeF-instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Finite a)- => Finite (TracedT s f a)- where universeF = map tabulate universeF
+ src/Data/Universe/Instances/Extended.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE UndecidableInstances #-}+module Data.Universe.Instances.Extended (+ -- | Instances for 'Universe' and 'Finite' for function-like functors and the empty type.+ Universe(..), Finite(..)+ ) where++import Control.Comonad.Trans.Traced (TracedT (..))+import Data.Functor.Rep (Representable (..), Co(..))+import Data.Universe.Class (Universe (..), Finite (..))+import Data.Universe.Helpers (retag, Tagged, Natural)++-- | We could do this:+--+-- instance Universe (f a) => Universe (Co f a) where universe = map Rep universe+--+-- However, since you probably only apply Rep to functors when you want to+-- think of them as being representable, I think it makes sense to use an+-- instance based on the representable-ness rather than the inherent+-- universe-ness.+--+-- Please complain if you disagree!+--+instance (Representable f, Finite (Rep f), Ord (Rep f), Universe a)+ => Universe (Co f a)+ where universe = map tabulate universe+instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Universe a)+ => Universe (TracedT s f a)+ where universe = map tabulate universe++instance (Representable f, Finite (Rep f), Ord (Rep f), Finite a)+ => Finite (Co f a)+ where universeF = map tabulate universeF; cardinality = retag (cardinality :: Tagged (Rep (Co f) -> a) Natural)+instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Finite a)+ => Finite (TracedT s f a)+ where universeF = map tabulate universeF; cardinality = retag (cardinality :: Tagged (Rep (TracedT s f)) Natural)
universe-instances-extended.cabal view
@@ -1,28 +1,42 @@-name: universe-instances-extended-version: 1.0.0.1-synopsis: Universe instances for types from select extra packages-homepage: https://github.com/dmwit/universe-license: BSD3-license-file: LICENSE-author: Daniel Wagner-maintainer: me@dmwit.com-copyright: Daniel Wagner 2014-category: Data-build-type: Simple-cabal-version: >=1.10+name: universe-instances-extended+version: 1.1+synopsis: Universe instances for types from selected extra packages+description:+ A class for finite and recursively enumerable types and some helper functions for enumerating them+ defined in @universe-base@ package:+ .+ @+ class Universe a where universe :: [a]+ class Universe a => Finite a where universeF :: [a]; universeF = universe+ @++homepage: https://github.com/dmwit/universe+license: BSD3+license-file: LICENSE+author: Daniel Wagner+maintainer: me@dmwit.com+copyright: Daniel Wagner 2014+category: Data+build-type: Simple+cabal-version: >=1.10+tested-with:+ GHC ==8.8.1 || ==8.6.4 || ==8.4.4 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3 || ==7.4.2 || ==7.0.4+ source-repository head- type: git- location: https://github.com/dmwit/universe+ type: git+ location: https://github.com/dmwit/universe+ source-repository this- type: git- location: https://github.com/dmwit/universe- tag: instances-extended-1.0.0.1+ type: git+ location: https://github.com/dmwit/universe+ tag: instances-extended-1.1 library- exposed-modules: Data.Universe.Instances.Extended- build-depends: adjunctions >=4 && <4.3,- base >=4 && <5 ,- comonad >=4 && <4.3,- universe-instances-base >=1.0 && <1.1,- void >=0.1 && <0.8- default-language: Haskell2010+ default-language: Haskell2010+ hs-source-dirs: src+ exposed-modules: Data.Universe.Instances.Extended+ build-depends:+ adjunctions >=4.3 && <4.5+ , base >=4.3 && <4.13+ , comonad >=4.2 && <5.1+ , universe-base >=1.1 && <1.1.1