packages feed

boring 0.1 → 0.1.1

raw patch · 4 files changed

+101/−45 lines, 4 filesdep ~base-compatdep ~semigroupsdep ~taggedsetup-changedPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base-compat, semigroups, tagged

API changes (from Hackage documentation)

- Data.Boring: instance Data.Boring.Absurd a => Data.Boring.Absurd (Data.List.NonEmpty.NonEmpty a)
- Data.Boring: instance Data.Boring.Absurd a => Data.Boring.Absurd (Generics.SOP.BasicFunctors.I a)
- Data.Boring: instance Data.Boring.Absurd a => Data.Boring.Boring (GHC.Base.Maybe a)
- Data.Boring: instance Data.Boring.Absurd b => Data.Boring.Absurd (Generics.SOP.BasicFunctors.K b a)
- Data.Boring: instance Data.Boring.Boring a => Data.Boring.Boring (Generics.SOP.BasicFunctors.I a)
- Data.Boring: instance Data.Boring.Boring b => Data.Boring.Boring (Generics.SOP.BasicFunctors.K b a)
- Data.Boring: instance a ~ b => Data.Boring.Boring (a Data.Type.Equality.:~: b)
- Data.Boring: instance n ~ 'Data.Nat.S 'Data.Nat.Z => Data.Boring.Boring (Data.Fin.Fin n)
- Data.Boring: instance n ~ 'Data.Nat.Z => Data.Boring.Absurd (Data.Fin.Fin n)
- Data.Boring: instance n ~ 'Data.Nat.Z => Data.Boring.Boring (Data.Vec.Lazy.Vec n a)
- Data.Boring: instance n ~ 'Data.Nat.Z => Data.Boring.Boring (Data.Vec.Pull.Vec n a)
+ Data.Boring: instance (Data.Boring.Absurd (f p), Data.Boring.Absurd (g p)) => Data.Boring.Absurd ((GHC.Generics.:+:) f g p)
+ Data.Boring: instance (Data.Boring.Boring (f p), Data.Boring.Boring (g p)) => Data.Boring.Boring ((GHC.Generics.:*:) f g p)
+ Data.Boring: instance (a Data.Type.Equality.~ b) => Data.Boring.Boring (a Data.Type.Equality.:~: b)
+ Data.Boring: instance (a ~ b) => Data.Boring.Boring (a Data.Type.Equality.:~~: b)
+ Data.Boring: instance (n Data.Type.Equality.~ 'Data.Nat.S 'Data.Nat.Z) => Data.Boring.Boring (Data.Fin.Fin n)
+ Data.Boring: instance (n Data.Type.Equality.~ 'Data.Nat.Z) => Data.Boring.Absurd (Data.Fin.Fin n)
+ Data.Boring: instance (n Data.Type.Equality.~ 'Data.Nat.Z) => Data.Boring.Boring (Data.Vec.Lazy.Vec n a)
+ Data.Boring: instance (n Data.Type.Equality.~ 'Data.Nat.Z) => Data.Boring.Boring (Data.Vec.Pull.Vec n a)
+ Data.Boring: instance Data.Boring.Absurd (GHC.Generics.V1 p)
+ Data.Boring: instance Data.Boring.Absurd (f (g p)) => Data.Boring.Absurd ((GHC.Generics.:.:) f g p)
+ Data.Boring: instance Data.Boring.Absurd (f p) => Data.Boring.Absurd (GHC.Generics.M1 i c f p)
+ Data.Boring: instance Data.Boring.Absurd (f p) => Data.Boring.Absurd (GHC.Generics.Rec1 f p)
+ Data.Boring: instance Data.Boring.Absurd a => Data.Boring.Absurd (Data.SOP.BasicFunctors.I a)
+ Data.Boring: instance Data.Boring.Absurd a => Data.Boring.Absurd (GHC.Base.NonEmpty a)
+ Data.Boring: instance Data.Boring.Absurd a => Data.Boring.Boring (GHC.Maybe.Maybe a)
+ Data.Boring: instance Data.Boring.Absurd b => Data.Boring.Absurd (Data.SOP.BasicFunctors.K b a)
+ Data.Boring: instance Data.Boring.Absurd c => Data.Boring.Absurd (GHC.Generics.K1 i c p)
+ Data.Boring: instance Data.Boring.Absurd p => Data.Boring.Absurd (GHC.Generics.Par1 p)
+ Data.Boring: instance Data.Boring.Boring (GHC.Generics.U1 p)
+ Data.Boring: instance Data.Boring.Boring (f (g p)) => Data.Boring.Boring ((GHC.Generics.:.:) f g p)
+ Data.Boring: instance Data.Boring.Boring (f p) => Data.Boring.Boring (GHC.Generics.M1 i c f p)
+ Data.Boring: instance Data.Boring.Boring (f p) => Data.Boring.Boring (GHC.Generics.Rec1 f p)
+ Data.Boring: instance Data.Boring.Boring a => Data.Boring.Boring (Data.SOP.BasicFunctors.I a)
+ Data.Boring: instance Data.Boring.Boring b => Data.Boring.Boring (Data.SOP.BasicFunctors.K b a)
+ Data.Boring: instance Data.Boring.Boring c => Data.Boring.Boring (GHC.Generics.K1 i c p)
+ Data.Boring: instance Data.Boring.Boring p => Data.Boring.Boring (GHC.Generics.Par1 p)
+ Data.Boring: instance GHC.Types.Coercible a b => Data.Boring.Boring (Data.Type.Coercion.Coercion a b)

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for boring +## 0.1.1++- Add `GHC.Generics` instances+- Add `:~~:` and `Coercion` instances+ ## 0.1  - `streams`, `constraints`, `generics-sop` instances.
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
boring.cabal view
@@ -1,61 +1,57 @@-name:                boring-version:             0.1-synopsis:            Boring and Absurd types+name:               boring+version:            0.1.1+synopsis:           Boring and Absurd types description:   * @Boring@ types are isomorphic to @()@.   .    * @Absurd@ types are isomorphic to @Void@.   .   See [What does () mean in Haskell -answer by Conor McBride](https://stackoverflow.com/questions/33112439/what-does-mean-in-haskell/33115522#33115522)-homepage:            https://github.com/phadej/boring-bug-reports:         https://github.com/phadej/boring/issues-license:             BSD3-license-file:        LICENSE-author:              Oleg Grenrus <oleg.grenrus@iki.fi>-maintainer:          Oleg.Grenrus <oleg.grenrus@iki.fi>-copyright:           (c) 2017 Oleg Grenrus-category:            Data-build-type:          Simple-extra-source-files:  ChangeLog.md-cabal-version:       >=1.10++homepage:           https://github.com/phadej/boring+bug-reports:        https://github.com/phadej/boring/issues+license:            BSD3+license-file:       LICENSE+author:             Oleg Grenrus <oleg.grenrus@iki.fi>+maintainer:         Oleg.Grenrus <oleg.grenrus@iki.fi>+copyright:          (c) 2017 Oleg Grenrus+category:           Data+build-type:         Simple+extra-source-files: ChangeLog.md+cabal-version:      >=1.10 tested-with:-  GHC==7.8.4,-  GHC==7.10.3,-  GHC==8.0.2,-  GHC==8.2.2,-  GHC==8.4.1+  GHC ==8.8.1 || ==8.6.5 || ==8.4.4 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4  source-repository head-  type:      git-  location:  https://github.com/phadej/boring.git+  type:     git+  location: https://github.com/phadej/boring.git  library-  exposed-modules:-    Data.Boring+  exposed-modules:  Data.Boring   build-depends:-    base                >=4.7     && <4.12,-    base-compat         >=0.9.3   && <0.11,-    adjunctions         >=4.4     && <4.5,-    constraints         ==0.4.1.3 || >=0.10 && <0.11,-    fin                 >=0.0.1   && <0.1,-    generics-sop        >=0.3.2.0 && <0.4,-    tagged              >=0.8.5   && <0.9,-    streams             >=3.3     && <3.4,-    transformers        >=0.3     && <0.6,-    transformers-compat >=0.5     && <0.7,-    vec                 >=0.1     && <0.2+      adjunctions          >=4.4     && <4.5+    , base                 >=4.7     && <4.13+    , base-compat          >=0.10.5 && <0.11+    , constraints          ==0.4.1.3 || >=0.10 && <0.11+    , fin                  >=0.0.1   && <0.1+    , generics-sop         >=0.3.2.0 && <0.5+    , streams              >=3.3     && <3.4+    , tagged               >=0.8.6   && <0.9+    , transformers         >=0.3     && <0.6+    , transformers-compat  >=0.5     && <0.7+    , vec                  >=0.1     && <0.2 -  if !impl(ghc >= 8.0)-    build-depends:-      semigroups         >=0.18.4   && <0.19-  if !impl(ghc >= 7.10)-    build-depends:-      void               >=0.7.2    && <0.8+  if !impl(ghc >=8.0)+    build-depends: semigroups >=0.18.5 && <0.19 +  if !impl(ghc >=7.10)+    build-depends: void >=0.7.2 && <0.8+   other-extensions:     CPP     FlexibleContexts     GADTs     TypeOperators-  hs-source-dirs:      src-  default-language:    Haskell2010++  hs-source-dirs:   src+  default-language: Haskell2010
src/Data/Boring.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE CPP              #-} {-# LANGUAGE DataKinds        #-}+{-# LANGUAGE EmptyCase        #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs            #-} {-# LANGUAGE TypeOperators    #-}@@ -75,6 +76,7 @@ import Data.Proxy            (Proxy (..)) import Data.Tagged           (Tagged (..)) import Data.Stream.Infinite  (Stream (..))+import GHC.Generics   hiding (Rep)  import qualified Data.Fin      as Fin import qualified Data.Nat      as Nat@@ -84,6 +86,8 @@ import qualified Generics.SOP  as SOP  #if MIN_VERSION_base(4,7,0)+import qualified Data.Coerce        as Co+import qualified Data.Type.Coercion as Co import qualified Data.Type.Equality as Eq #endif @@ -180,9 +184,19 @@     boring = Nothing  #if MIN_VERSION_base(4,7,0)--- | Type equality is 'Boring' too.+-- | Coercibility is 'Boring' too.+instance Co.Coercible a b => Boring (Co.Coercion a b) where+    boring = Co.Coercion++-- | Homogeneous type equality is 'Boring' too. instance a ~ b => Boring (a Eq.:~: b) where     boring = Eq.Refl++# if MIN_VERSION_base(4,12,0)+-- | Heterogeneous type equality is 'Boring' too.+instance a Eq.~~ b => Boring (a Eq.:~~: b) where+    boring = Eq.HRefl+# endif #endif  instance n ~ 'Nat.Z => Boring (Vec.Vec n a) where@@ -194,6 +208,27 @@ instance n ~ ('Nat.S 'Nat.Z) => Boring (Fin.Fin n) where     boring = Fin.boring +instance Boring (U1 p) where+    boring = U1++instance Boring c => Boring (K1 i c p) where+    boring = K1 boring++instance Boring (f p) => Boring (M1 i c f p) where+    boring = M1 boring++instance (Boring (f p), Boring (g p)) => Boring ((f :*: g) p) where+    boring = boring :*: boring++instance Boring p => Boring (Par1 p) where+    boring = Par1 boring++instance Boring (f p) => Boring (Rec1 f p) where+    boring = Rec1 boring++instance Boring (f (g p)) => Boring ((f :.: g) p) where+    boring = Comp1 boring+ ------------------------------------------------------------------------------- -- Absurd -------------------------------------------------------------------------------@@ -244,6 +279,28 @@  instance n ~ 'Nat.Z => Absurd (Fin.Fin n) where     absurd = Fin.absurd++instance Absurd (V1 p) where+    absurd v = case v of {}++instance Absurd c => Absurd (K1 i c p) where+    absurd = absurd . unK1++instance Absurd (f p) => Absurd (M1 i c f p) where+    absurd = absurd . unM1++instance (Absurd (f p), Absurd (g p)) => Absurd ((f :+: g) p) where+    absurd (L1 a) = absurd a+    absurd (R1 b) = absurd b++instance Absurd p => Absurd (Par1 p) where+    absurd = absurd . unPar1++instance Absurd (f p) => Absurd (Rec1 f p) where+    absurd = absurd . unRec1++instance Absurd (f (g p)) => Absurd ((f :.: g) p) where+    absurd = absurd . unComp1  ------------------------------------------------------------------------------- -- More interesting stuff