packages feed

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
@@ -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