freer 0.2.2.1 → 0.2.2.2
raw patch · 3 files changed
+11/−7 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Open.Union: instance (r ~ (t : r')) => Data.Open.Union.Member' t r 0
- Data.Open.Union: instance (r ~ (t' : r'), Data.Open.Union.Member' t r' n) => Data.Open.Union.Member' t r n
+ Data.Open.Union: instance (r ~ (t : r')) => Data.Open.Union.Member' t r 'Data.Open.Union.Z
+ Data.Open.Union: instance (r ~ (t' : r'), Data.Open.Union.Member' t r' n) => Data.Open.Union.Member' t r ('Data.Open.Union.S n)
Files
- changelog.md +5/−0
- freer.cabal +1/−1
- src/Data/Open/Union.hs +5/−6
changelog.md view
@@ -1,3 +1,8 @@+# 0.2.2.2 (Sep. 14, 2015)++* Use local `data Nat` for `Data.Open.Union`+ * Using GHC.TypeLits lead to overlapping instances+ # 0.2.2.1 (Sep. 14, 2015) * Document ALL THE THINGS
freer.cabal view
@@ -1,5 +1,5 @@ name: freer-version: 0.2.2.1+version: 0.2.2.2 synopsis: Implementation of the Freer Monad license: BSD3 license-file: LICENSE
src/Data/Open/Union.hs view
@@ -37,8 +37,6 @@ Member(..) ) where -import GHC.TypeLits (Nat)- -------------------------------------------------------------------------------- -- Interface -- --------------------------------------------------------------------------------@@ -66,6 +64,7 @@ -------------------------------------------------------------------------------- -- Implementation -- --------------------------------------------------------------------------------+data Nat = S Nat | Z data P (n :: Nat) = P -- injecting/projecting at a specified position P n@@ -73,12 +72,12 @@ inj' :: P n -> t v -> Union r v prj' :: P n -> Union r v -> Maybe (t v) -instance (r ~ (t ': r')) => Member' t r 0 where+instance (r ~ (t ': r')) => Member' t r 'Z where inj' _ = UNow prj' _ (UNow x) = Just x prj' _ _ = Nothing -instance (r ~ (t' ': r'), Member' t r' n) => Member' t r n where+instance (r ~ (t' ': r'), Member' t r' n) => Member' t r ('S n) where inj' _ = UNext . inj' (P::P n) prj' _ (UNow _) = Nothing prj' _ (UNext x) = prj' (P::P n) x@@ -88,8 +87,8 @@ -- This closed type family disambiguates otherwise overlapping -- instances type family FindElem (t :: * -> *) r :: Nat where- FindElem t (t ': r) = 0- FindElem t (any ': r) = FindElem t r+ FindElem t (t ': r) = 'Z+ FindElem t (any ': r) = 'S (FindElem t r) type family EQU (a :: k) (b :: k) :: Bool where EQU a a = 'True