mirror of
https://github.com/haskell-effectful/effectful.git
synced 2024-11-22 22:14:21 +03:00
Use explicit deriving strategies
This commit is contained in:
parent
96ebf667a3
commit
e2b1ffadf8
@ -29,7 +29,10 @@ source-repository head
|
|||||||
location: https://github.com/haskell-effectful/effectful.git
|
location: https://github.com/haskell-effectful/effectful.git
|
||||||
|
|
||||||
common language
|
common language
|
||||||
ghc-options: -Wall -Wcompat -Wno-unticked-promoted-constructors
|
ghc-options: -Wall
|
||||||
|
-Wcompat
|
||||||
|
-Wno-unticked-promoted-constructors
|
||||||
|
-Wmissing-deriving-strategies
|
||||||
-Werror=prepositive-qualified-module
|
-Werror=prepositive-qualified-module
|
||||||
|
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
@ -238,7 +238,7 @@ tryError m = (Right <$> m) `catchError` \es e -> pure $ Left (es, e)
|
|||||||
-- Helpers
|
-- Helpers
|
||||||
|
|
||||||
newtype ErrorId = ErrorId Unique
|
newtype ErrorId = ErrorId Unique
|
||||||
deriving Eq
|
deriving newtype Eq
|
||||||
|
|
||||||
-- | A unique is picked so that distinct 'Error' handlers for the same type
|
-- | A unique is picked so that distinct 'Error' handlers for the same type
|
||||||
-- don't catch each other's exceptions.
|
-- don't catch each other's exceptions.
|
||||||
|
@ -119,7 +119,7 @@ type role Eff nominal representational
|
|||||||
--
|
--
|
||||||
-- - Allows the effects to be handled in any order.
|
-- - Allows the effects to be handled in any order.
|
||||||
newtype Eff (es :: [Effect]) a = Eff (Env es -> IO a)
|
newtype Eff (es :: [Effect]) a = Eff (Env es -> IO a)
|
||||||
deriving (Monoid, Semigroup)
|
deriving newtype (Monoid, Semigroup)
|
||||||
|
|
||||||
-- | Run a pure 'Eff' computation.
|
-- | Run a pure 'Eff' computation.
|
||||||
--
|
--
|
||||||
|
@ -96,7 +96,7 @@ data UnliftStrategy
|
|||||||
-- ^ The concurrent strategy makes it possible for the unlifting function to
|
-- ^ The concurrent strategy makes it possible for the unlifting function to
|
||||||
-- be called in threads distinct from its creator. See 'Persistence' and
|
-- be called in threads distinct from its creator. See 'Persistence' and
|
||||||
-- 'Limit' settings for more information.
|
-- 'Limit' settings for more information.
|
||||||
deriving (Eq, Generic, Ord, Show)
|
deriving stock (Eq, Generic, Ord, Show)
|
||||||
|
|
||||||
-- | Persistence setting for the 'ConcUnlift' strategy.
|
-- | Persistence setting for the 'ConcUnlift' strategy.
|
||||||
--
|
--
|
||||||
@ -116,7 +116,7 @@ data Persistence
|
|||||||
| Persistent
|
| Persistent
|
||||||
-- ^ Persist the environment between calls to the unlifting function within a
|
-- ^ Persist the environment between calls to the unlifting function within a
|
||||||
-- particular thread.
|
-- particular thread.
|
||||||
deriving (Eq, Generic, Ord, Show)
|
deriving stock (Eq, Generic, Ord, Show)
|
||||||
|
|
||||||
-- | Limit setting for the 'ConcUnlift' strategy.
|
-- | Limit setting for the 'ConcUnlift' strategy.
|
||||||
data Limit
|
data Limit
|
||||||
@ -135,7 +135,7 @@ data Limit
|
|||||||
-- when called in @N@ threads and @K+1@ copies when called in @K < N@ threads.
|
-- when called in @N@ threads and @K+1@ copies when called in @K < N@ threads.
|
||||||
| Unlimited
|
| Unlimited
|
||||||
-- ^ Unlimited use of the unlifting function.
|
-- ^ Unlimited use of the unlifting function.
|
||||||
deriving (Eq, Generic, Ord, Show)
|
deriving stock (Eq, Generic, Ord, Show)
|
||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
-- Unlift functions
|
-- Unlift functions
|
||||||
@ -229,7 +229,7 @@ persistentConcUnlift es0 cleanUp threads k = do
|
|||||||
-- Data types
|
-- Data types
|
||||||
|
|
||||||
newtype EntryId = EntryId Int
|
newtype EntryId = EntryId Int
|
||||||
deriving Eq
|
deriving newtype Eq
|
||||||
|
|
||||||
newEntryId :: EntryId
|
newEntryId :: EntryId
|
||||||
newEntryId = EntryId 0
|
newEntryId = EntryId 0
|
||||||
|
@ -47,7 +47,7 @@ data OnEmptyPolicy
|
|||||||
--
|
--
|
||||||
-- /Note:/ state modifications are rolled back on 'Empty' only. In particular,
|
-- /Note:/ state modifications are rolled back on 'Empty' only. In particular,
|
||||||
-- they are __not__ rolled back on exceptions.
|
-- they are __not__ rolled back on exceptions.
|
||||||
deriving (Eq, Generic, Ord, Show)
|
deriving stock (Eq, Generic, Ord, Show)
|
||||||
|
|
||||||
-- | Run the 'NonDet' effect with a given 'OnEmptyPolicy'.
|
-- | Run the 'NonDet' effect with a given 'OnEmptyPolicy'.
|
||||||
--
|
--
|
||||||
|
@ -25,7 +25,10 @@ source-repository head
|
|||||||
location: https://github.com/haskell-effectful/effectful.git
|
location: https://github.com/haskell-effectful/effectful.git
|
||||||
|
|
||||||
common language
|
common language
|
||||||
ghc-options: -Wall -Wcompat -Wno-unticked-promoted-constructors
|
ghc-options: -Wall
|
||||||
|
-Wcompat
|
||||||
|
-Wno-unticked-promoted-constructors
|
||||||
|
-Wmissing-deriving-strategies
|
||||||
-Werror=prepositive-qualified-module
|
-Werror=prepositive-qualified-module
|
||||||
|
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
@ -72,7 +72,7 @@ errState = do
|
|||||||
err
|
err
|
||||||
|
|
||||||
newtype MyString = MyString String
|
newtype MyString = MyString String
|
||||||
deriving (IsString, Eq, Show)
|
deriving newtype (IsString, Eq, Show)
|
||||||
|
|
||||||
data Janky = forall s. Janky (forall _i. Eff '[State s] ())
|
data Janky = forall s. Janky (forall _i. Eff '[State s] ())
|
||||||
|
|
||||||
|
@ -25,7 +25,10 @@ source-repository head
|
|||||||
location: https://github.com/haskell-effectful/effectful.git
|
location: https://github.com/haskell-effectful/effectful.git
|
||||||
|
|
||||||
common language
|
common language
|
||||||
ghc-options: -Wall -Wcompat -Wno-unticked-promoted-constructors
|
ghc-options: -Wall
|
||||||
|
-Wcompat
|
||||||
|
-Wno-unticked-promoted-constructors
|
||||||
|
-Wmissing-deriving-strategies
|
||||||
-Werror=prepositive-qualified-module
|
-Werror=prepositive-qualified-module
|
||||||
|
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
@ -363,7 +363,7 @@ fe_tryFileSize :: FE.Has FE_File sig m => FilePath -> m (Maybe Int)
|
|||||||
fe_tryFileSize = FE.send . FE_tryFileSize
|
fe_tryFileSize = FE.send . FE_tryFileSize
|
||||||
|
|
||||||
newtype FE_FileC m a = FE_FileC { fe_runFileC :: m a }
|
newtype FE_FileC m a = FE_FileC { fe_runFileC :: m a }
|
||||||
deriving (Applicative, Functor, Monad, MonadIO)
|
deriving newtype (Applicative, Functor, Monad, MonadIO)
|
||||||
|
|
||||||
instance
|
instance
|
||||||
( MonadIO m
|
( MonadIO m
|
||||||
@ -380,7 +380,7 @@ fe_logMsg :: FE.Has FE_Logging sig m => String -> m ()
|
|||||||
fe_logMsg = FE.send . FE_logMsg . T.pack
|
fe_logMsg = FE.send . FE_logMsg . T.pack
|
||||||
|
|
||||||
newtype FE_LoggingC m a = FE_LoggingC { fe_runLoggingC :: FE.StateC [Text] m a }
|
newtype FE_LoggingC m a = FE_LoggingC { fe_runLoggingC :: FE.StateC [Text] m a }
|
||||||
deriving (Applicative, Functor, Monad)
|
deriving newtype (Applicative, Functor, Monad)
|
||||||
|
|
||||||
instance
|
instance
|
||||||
( FE.Algebra sig m
|
( FE.Algebra sig m
|
||||||
@ -440,7 +440,7 @@ class Monad m => MonadFile m where
|
|||||||
mtl_tryFileSize :: FilePath -> m (Maybe Int)
|
mtl_tryFileSize :: FilePath -> m (Maybe Int)
|
||||||
|
|
||||||
newtype FileT m a = FileT { runFileT :: m a }
|
newtype FileT m a = FileT { runFileT :: m a }
|
||||||
deriving (Functor, Applicative, Monad, MonadIO)
|
deriving newtype (Functor, Applicative, Monad, MonadIO)
|
||||||
|
|
||||||
instance M.MonadTrans FileT where
|
instance M.MonadTrans FileT where
|
||||||
lift = FileT
|
lift = FileT
|
||||||
@ -459,7 +459,7 @@ class Monad m => MonadLog m where
|
|||||||
mtl_logMsg :: String -> m ()
|
mtl_logMsg :: String -> m ()
|
||||||
|
|
||||||
newtype LoggingT m a = LoggingT (M.StateT [Text] m a)
|
newtype LoggingT m a = LoggingT (M.StateT [Text] m a)
|
||||||
deriving (Functor, Applicative, Monad, MonadIO, M.MonadTrans)
|
deriving newtype (Functor, Applicative, Monad, MonadIO, M.MonadTrans)
|
||||||
|
|
||||||
instance {-# OVERLAPPABLE #-}
|
instance {-# OVERLAPPABLE #-}
|
||||||
( MonadLog m
|
( MonadLog m
|
||||||
|
@ -34,7 +34,10 @@ flag benchmark-foreign-libraries
|
|||||||
default: False
|
default: False
|
||||||
|
|
||||||
common language
|
common language
|
||||||
ghc-options: -Wall -Wcompat -Wno-unticked-promoted-constructors
|
ghc-options: -Wall
|
||||||
|
-Wcompat
|
||||||
|
-Wno-unticked-promoted-constructors
|
||||||
|
-Wmissing-deriving-strategies
|
||||||
-Werror=prepositive-qualified-module
|
-Werror=prepositive-qualified-module
|
||||||
|
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
@ -474,7 +474,7 @@ data Conc :: [Effect] -> Type -> Type where
|
|||||||
Alt :: Conc es a -> Conc es a -> Conc es a
|
Alt :: Conc es a -> Conc es a -> Conc es a
|
||||||
Empty :: Conc es a
|
Empty :: Conc es a
|
||||||
|
|
||||||
deriving instance Functor (Conc es)
|
deriving stock instance Functor (Conc es)
|
||||||
|
|
||||||
instance Applicative (Conc es) where
|
instance Applicative (Conc es) where
|
||||||
pure = Pure
|
pure = Pure
|
||||||
|
@ -43,5 +43,6 @@ assertThrowsErrorCall
|
|||||||
=> String -> Eff es a -> Eff es ()
|
=> String -> Eff es a -> Eff es ()
|
||||||
assertThrowsErrorCall err = assertThrows err (\ErrorCall{} -> True)
|
assertThrowsErrorCall err = assertThrows err (\ErrorCall{} -> True)
|
||||||
|
|
||||||
data Ex = Ex deriving (Eq, Show)
|
data Ex = Ex
|
||||||
|
deriving stock (Eq, Show)
|
||||||
instance Exception Ex
|
instance Exception Ex
|
||||||
|
Loading…
Reference in New Issue
Block a user