can-i-haz-0.2.0.0: test/Common.hs
{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
{-# LANGUAGE Strict #-}
module Common where
import Control.DeepSeq
import GHC.Generics
import Control.Monad.Except.CoHas
import Control.Monad.Reader.Has
data FooEnv = FooEnv
{ fooInt :: Int
, fooStr :: String
} deriving (Eq, Ord, Show, Generic, NFData)
data BarEnv = BarEnv
{ barDouble :: Double
, barArr :: [Int]
} deriving (Eq, Ord, Show, Generic, NFData)
data AppEnv = AppEnv
{ fooEnv :: FooEnv
, barEnv :: BarEnv
} deriving (Eq, Ord, Show, Generic, NFData, Has FooEnv, Has BarEnv)
data AppErr = FooEnvErr FooEnv
| BarEnvErr BarEnv
deriving (Eq, Ord, Show, Generic, NFData, CoHas FooEnv, CoHas BarEnv)