packages feed

text-show-instances-3.9: tests/Instances/Control/Monad/Trans.hs

{-# LANGUAGE FlexibleContexts           #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE StandaloneDeriving         #-}
{-# LANGUAGE UndecidableInstances       #-}
{-# OPTIONS_GHC -fno-warn-orphans               #-}
{-|
Module:      Instances.Control.Monad.Trans
Copyright:   (C) 2014-2017 Ryan Scott
License:     BSD-style (see the file LICENSE)
Maintainer:  Ryan Scott
Stability:   Provisional
Portability: GHC

Provides 'Arbitrary' instances for monad transformers.
-}
module Instances.Control.Monad.Trans () where

import           Control.Monad.Trans.Except              (ExceptT(..))
import           Control.Monad.Trans.Identity            (IdentityT(..))
import qualified Control.Monad.Trans.Writer.Lazy   as WL (WriterT(..))
import qualified Control.Monad.Trans.Writer.Strict as WS (WriterT(..))

import           Test.QuickCheck (Arbitrary)

deriving instance Arbitrary (m (Either e a)) => Arbitrary (ExceptT e m a)
deriving instance Arbitrary (f a)            => Arbitrary (IdentityT f a)
deriving instance Arbitrary (m (a, w))       => Arbitrary (WL.WriterT w m a)
deriving instance Arbitrary (m (a, w))       => Arbitrary (WS.WriterT w m a)