constraints 0.3.3 → 0.3.4
raw patch · 2 files changed
+19/−2 lines, 2 filesdep ~basedep ~ghc-prim
Dependency ranges changed: base, ghc-prim
Files
- Data/Constraint.hs +18/−1
- constraints.cabal +1/−1
Data/Constraint.hs view
@@ -37,7 +37,7 @@ , weaken1, weaken2, contract , (&&&), (***) , trans, refl- , top+ , top, bottom -- * Reflection , Class(..) , (:=>)(..)@@ -130,6 +130,22 @@ top :: a :- () top = Sub Dict +type family Ex (a :: *) (c :: Constraint) :: Constraint+type instance Ex () c = ()+type instance Ex Bool c = c++falso :: (() ~ a) :- Ex a c+falso = Sub Dict++-- |+-- A bad type coercion lets you derive any type you want.+--+-- These are the initial arrows of the category and (() ~ Bool) is the initial object+--+-- This demonstrates the law of classical logical <http://en.wikipedia.org/wiki/Principle_of_explosion ex falso quodlibet>+bottom :: (() ~ Bool) :- c+bottom = thing+ -- | Reify the relationship between a class and its superclass constraints as a class class Class b h | h -> b where cls :: h :- b@@ -326,3 +342,4 @@ instance a => Monoid (Dict a) where mappend Dict Dict = Dict mempty = Dict+
constraints.cabal view
@@ -1,6 +1,6 @@ name: constraints category: Constraints-version: 0.3.3+version: 0.3.4 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE