extensible-effects 2.5.1.2 → 2.5.2.0
raw patch · 10 files changed
+49/−22 lines, 10 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Control.Eff.Example: sum2 :: Member (Reader Int) r => Member (Reader Float) r => Eff r Float
+ Control.Eff.Example: sum2 :: ([Reader Int, Reader Float] <:: r) => Eff r Float
- Control.Eff.Example: writeAndAdd :: (Member (Writer a) e, Member (State a) e, Num a) => [a] -> Eff e ()
+ Control.Eff.Example: writeAndAdd :: ([Writer a, State a] <:: e, Num a) => [a] -> Eff e ()
Files
- extensible-effects.cabal +1/−1
- src/Control/Eff/Example.hs +8/−5
- src/Control/Eff/Internal.hs +0/−1
- src/Control/Eff/NdetEff.hs +2/−1
- src/Control/Eff/State/Lazy.hs +0/−1
- src/Control/Eff/State/OnDemand.hs +0/−1
- src/Control/Eff/State/Strict.hs +0/−1
- src/Control/Eff/Trace.hs +0/−1
- src/Data/OpenUnion.hs +38/−8
- test/Utils.hs +0/−2
extensible-effects.cabal view
@@ -6,7 +6,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 2.5.1.2+version: 2.5.2.0 -- A short (one-line) description of the package. synopsis: An Alternative to Monad Transformers
src/Control/Eff/Example.hs view
@@ -1,4 +1,4 @@-{-# OPTIONS_GHC -Werror #-}+{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE TypeOperators, GADTs, DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE Safe #-}@@ -25,9 +25,9 @@ -- }}} -- | Multiple Reader effects-sum2 :: Member (Reader Int) r- => Member (Reader Float) r- => Eff r Float+sum2 :: ([ Reader Int+ , Reader Float+ ] <:: r) => Eff r Float sum2 = do v1 <- ask v2 <- ask@@ -46,7 +46,10 @@ sumAll = mapM_ (modify . (+)) -- | Write a list of numbers and add them to the current state.-writeAndAdd :: (Member (Writer a) e, Member (State a) e, Num a)+writeAndAdd :: ( [ Writer a+ , State a+ ] <:: e+ , Num a) => [a] -> Eff e () writeAndAdd l = do
src/Control/Eff/Internal.hs view
@@ -1,4 +1,3 @@-{-# OPTIONS_GHC -Werror #-} {-# LANGUAGE Trustworthy #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-}
src/Control/Eff/NdetEff.hs view
@@ -1,5 +1,6 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+ {-# LANGUAGE TypeFamilies #-}-{-# OPTIONS_GHC -Werror -fno-warn-orphans #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-}
src/Control/Eff/State/Lazy.hs view
@@ -1,4 +1,3 @@-{-# OPTIONS_GHC -Werror #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}
src/Control/Eff/State/OnDemand.hs view
@@ -1,4 +1,3 @@-{-# OPTIONS_GHC -Werror #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}
src/Control/Eff/State/Strict.hs view
@@ -1,4 +1,3 @@-{-# OPTIONS_GHC -Werror #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE BangPatterns #-}
src/Control/Eff/Trace.hs view
@@ -1,4 +1,3 @@-{-# OPTIONS_GHC -Werror #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE FlexibleContexts #-}
src/Data/OpenUnion.hs view
@@ -1,18 +1,22 @@ {-# OPTIONS_HADDOCK show-extensions #-}+{-# OPTIONS_GHC -Wwarn #-} {-# LANGUAGE CPP #-} -{-# LANGUAGE TypeFamilies, TypeOperators #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-}-{-# LANGUAGE DataKinds, PolyKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-} {-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FlexibleContexts #-} {-# LANGUAGE Trustworthy #-}-{-# OPTIONS_GHC -Wwarn #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} #if __GLASGOW_HASKELL__ < 710 || FORCE_OU51 {-# LANGUAGE OverlappingInstances #-}-#else #endif -- Only for SetMember below, when emulating Monad Transformers@@ -51,13 +55,23 @@ -- type t in the list r as the TRep. (We will need UnsafeCoerce then). -- -- The interface is the same as of other OpenUnion*.hs-module Data.OpenUnion (Union, inj, prj, decomp,- Member, SetMember, weaken- ) where+module Data.OpenUnion ( Union+ , inj+ , prj+ , decomp+ , Member+ , SetMember+ , type(<::)+ , weaken+ ) where import Unsafe.Coerce(unsafeCoerce)+ #if __GLASGOW_HASKELL__ > 800+import Data.Kind (Constraint) import GHC.TypeLits+#else+import GHC.Exts (Constraint) #endif -- | The data constructors of Union are not exported@@ -124,6 +138,22 @@ inj = inj' (unP $ (elemNo :: P t r)) prj = prj' (unP $ (elemNo :: P t r)) #endif++-- | A useful operator for reducing boilerplate.+--+-- @+-- f :: [Reader Int, Writer String] ::> r+-- => a -> Eff r b+-- @+-- is equal to+--+-- @+-- f :: (Member (Reader Int) r, Member (Writer String) r)+-- => a -> Eff r b+-- @+type family (<::) (ms :: [* -> *]) r where+ (<::) '[] r = (() :: Constraint)+ (<::) (m ': ms) r = (Member m r, (<::) ms r) {-# INLINE [2] decomp #-} decomp :: Union (t ': r) v -> Either (Union r v) (t v)
test/Utils.hs view
@@ -1,5 +1,3 @@-{-# OPTIONS_GHC -Werror #-}- module Utils where import Control.Exception (ErrorCall, catch)