trivial-constraint 0.5.0.0 → 0.5.1.0
raw patch · 2 files changed
+63/−34 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Constraint.Trivial: type Impossible t = HiddenEmptyClass t
- Data.Constraint.Trivial: type Impossible2 t s = HiddenEmptyClass2 t s
- Data.Constraint.Trivial: type Impossible3 t s r = HiddenEmptyClass3 t s r
- Data.Constraint.Trivial: type Impossible4 t s r q = HiddenEmptyClass4 t s r q
- Data.Constraint.Trivial: type Impossible5 t s r q p = HiddenEmptyClass5 t s r q p
- Data.Constraint.Trivial: type Impossible6 t s r q p o = HiddenEmptyClass6 t s r q p o
- Data.Constraint.Trivial: type Impossible7 t s r q p o n = HiddenEmptyClass7 t s r q p o n
- Data.Constraint.Trivial: type Impossible8 t s r q p o n m = HiddenEmptyClass8 t s r q p o n m
- Data.Constraint.Trivial: type Impossible9 t s r q p o n m l = HiddenEmptyClass9 t s r q p o n m l
+ Data.Constraint.Trivial: absurdible :: Impossible t => proxy t -> a
+ Data.Constraint.Trivial: absurdible2 :: Impossible2 t s => proxy t -> proxy s -> a
+ Data.Constraint.Trivial: absurdible3 :: Impossible3 t s r => proxy t -> proxy s -> proxy r -> a
+ Data.Constraint.Trivial: absurdible4 :: Impossible4 t s r q => proxy t -> proxy s -> proxy r -> proxy q -> a
+ Data.Constraint.Trivial: absurdible5 :: Impossible5 t s r q p => proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> a
+ Data.Constraint.Trivial: absurdible6 :: Impossible6 t s r q p o => proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> proxy o -> a
+ Data.Constraint.Trivial: absurdible7 :: Impossible7 t s r q p o n => proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> proxy o -> proxy n -> a
+ Data.Constraint.Trivial: absurdible8 :: Impossible8 t s r q p o n m => proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> proxy o -> proxy n -> proxy m -> a
+ Data.Constraint.Trivial: absurdible9 :: Impossible9 t s r q p o n m l => proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> proxy o -> proxy n -> proxy m -> proxy l -> a
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible") => Impossible t
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible2") => Impossible2 t s
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible3") => Impossible3 t s r
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible4") => Impossible4 t s r q
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible5") => Impossible5 t s r q p
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible6") => Impossible6 t s r q p o
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible7") => Impossible7 t s r q p o n
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible8") => Impossible8 t s r q p o n m
+ Data.Constraint.Trivial: class TypeError (Disallowed "Impossible9") => Impossible9 t s r q p o n m l
Files
- src/Data/Constraint/Trivial.hs +57/−32
- trivial-constraint.cabal +6/−2
src/Data/Constraint/Trivial.hs view
@@ -4,23 +4,33 @@ -- License : GPL v3 (see LICENSE) -- Maintainer : (@) jsagemue $ uni-koeln.de ---{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE UndecidableSuperClasses #-} module Data.Constraint.Trivial (- Unconstrained, Impossible- , Unconstrained2, Impossible2- , Unconstrained3, Impossible3- , Unconstrained4, Impossible4- , Unconstrained5, Impossible5- , Unconstrained6, Impossible6- , Unconstrained7, Impossible7- , Unconstrained8, Impossible8- , Unconstrained9, Impossible9+ Unconstrained, Impossible(..)+ , Unconstrained2, Impossible2(..)+ , Unconstrained3, Impossible3(..)+ , Unconstrained4, Impossible4(..)+ , Unconstrained5, Impossible5(..)+ , Unconstrained6, Impossible6(..)+ , Unconstrained7, Impossible7(..)+ , Unconstrained8, Impossible8(..)+ , Unconstrained9, Impossible9(..) ) where +import GHC.TypeLits++type Disallowed t = 'Text "All instances of "+ ':<>: 'Text t+ ':<>: 'Text " are disallowed."+ -- | Intended to be used as an argument for some type constructor which expects kind -- @k -> Constraint@, when you do not actually wish to constrain anything with it. --@@ -33,9 +43,16 @@ -- | This constraint can /never/ be fulfilled. Might be useful e.g. as a default -- for a class-associated constraint; this basically disables any method with -- that constraint (so it can safely be left 'undefined').-type Impossible t = HiddenEmptyClass t--class HiddenEmptyClass t+class TypeError (Disallowed "Impossible") => Impossible t where+ -- | Ex falso quodlibet. If you have @'Impossible' t@, you can do+ -- anything.+ --+ -- Might be useful e.g. if you are inside a function wiht an+ -- @'Impossible' t =>@ constraint, and you want to do something+ -- impossible, like the constraint implies.+ --+ -- Analogous to 'Data.Void.absurd'.+ absurdible :: proxy t -> a -- | Like 'Unconstrained', but with kind signature @k -> k -> Constraint@@@ -43,54 +60,62 @@ class Unconstrained2 t s instance Unconstrained2 t s -type Impossible2 t s = HiddenEmptyClass2 t s-class HiddenEmptyClass2 t s+class TypeError (Disallowed "Impossible2") => Impossible2 t s where+ absurdible2 :: proxy t -> proxy s -> a class Unconstrained3 t s r instance Unconstrained3 t s r -type Impossible3 t s r = HiddenEmptyClass3 t s r-class HiddenEmptyClass3 t s r+class TypeError (Disallowed "Impossible3") => Impossible3 t s r where+ absurdible3 :: proxy t -> proxy s -> proxy r -> a class Unconstrained4 t s r q instance Unconstrained4 t s r q -type Impossible4 t s r q = HiddenEmptyClass4 t s r q-class HiddenEmptyClass4 t s r q+class TypeError (Disallowed "Impossible4") => Impossible4 t s r q where+ absurdible4 :: proxy t -> proxy s -> proxy r -> proxy q -> a class Unconstrained5 t s r q p instance Unconstrained5 t s r q p -type Impossible5 t s r q p = HiddenEmptyClass5 t s r q p-class HiddenEmptyClass5 t s r q p+class TypeError (Disallowed "Impossible5") => Impossible5 t s r q p where+ absurdible5 :: proxy t -> proxy s -> proxy r -> proxy q -> proxy p -> a class Unconstrained6 t s r q p o instance Unconstrained6 t s r q p o -type Impossible6 t s r q p o = HiddenEmptyClass6 t s r q p o-class HiddenEmptyClass6 t s r q p o+class TypeError (Disallowed "Impossible6") => Impossible6 t s r q p o where+ absurdible6 :: proxy t -> proxy s -> proxy r+ -> proxy q -> proxy p -> proxy o+ -> a class Unconstrained7 t s r q p o n instance Unconstrained7 t s r q p o n -type Impossible7 t s r q p o n = HiddenEmptyClass7 t s r q p o n-class HiddenEmptyClass7 t s r q p o n+class TypeError (Disallowed "Impossible7") => Impossible7 t s r q p o n where+ absurdible7 :: proxy t -> proxy s -> proxy r -> proxy q+ -> proxy p -> proxy o -> proxy n -> a class Unconstrained8 t s r q p o n m instance Unconstrained8 t s r q p o n m -type Impossible8 t s r q p o n m = HiddenEmptyClass8 t s r q p o n m-class HiddenEmptyClass8 t s r q p o n m+class TypeError (Disallowed "Impossible8") => Impossible8 t s r q p o n m where+ absurdible8 :: proxy t -> proxy s -> proxy r -> proxy q+ -> proxy p -> proxy o -> proxy n -> proxy m+ -> a class Unconstrained9 t s r q p o n m l instance Unconstrained9 t s r q p o n m l -type Impossible9 t s r q p o n m l = HiddenEmptyClass9 t s r q p o n m l-class HiddenEmptyClass9 t s r q p o n m l+class TypeError (Disallowed "Impossible9") => Impossible9 t s r q p o n m l where+ absurdible9 :: proxy t -> proxy s -> proxy r+ -> proxy q -> proxy p -> proxy o+ -> proxy n -> proxy m -> proxy l+ -> a
trivial-constraint.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: trivial-constraint-version: 0.5.0.0+version: 0.5.1.0 synopsis: Constraints that any type, resp. no type fulfills description: Since GHC 7.4, constraints are first-class: we have the constraint kind, and thus type-classes have a kind such as @* -> Constraint@. .@@ -19,13 +19,17 @@ license: GPL-3 license-file: LICENSE author: Justus Sagemüller-maintainer: sagemuej@smail.uni-koeln.de+maintainer: jsag@hvl.no homepage: https://github.com/leftaroundabout/trivial-constraint -- copyright: category: Constraints build-type: Simple -- extra-source-files: cabal-version: >=1.10++source-repository head+ type: git+ location: git://github.com/leftaroundabout/trivial-constraint.git library exposed-modules: Data.Constraint.Trivial