packages feed

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