verismith-0.5.0.0: Random verilog generation and simulator testing.

Copyright(c) 2019 Yann Herklotz Grave
LicenseGPL-3
Maintaineryann [at] yannherklotz [dot] com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Verismith.Result

Description

Result monadic type. This is nearly equivalent to the transformers Error type, but to have more control this is reimplemented with the instances that are needed in Verismith.

Synopsis

Documentation

data Result a b Source #

Result type which is equivalent to Either or Error. This is reimplemented so that there is full control over the Monad definition and definition of a Monad transformer ResultT.

Constructors

Fail a 
Pass b 
Instances
Bifunctor Result Source # 
Instance details

Defined in Verismith.Result

Methods

bimap :: (a -> b) -> (c -> d) -> Result a c -> Result b d #

first :: (a -> b) -> Result a c -> Result b c #

second :: (b -> c) -> Result a b -> Result a c #

Monad (Result a) Source # 
Instance details

Defined in Verismith.Result

Methods

(>>=) :: Result a a0 -> (a0 -> Result a b) -> Result a b #

(>>) :: Result a a0 -> Result a b -> Result a b #

return :: a0 -> Result a a0 #

fail :: String -> Result a a0 #

Functor (Result a) Source # 
Instance details

Defined in Verismith.Result

Methods

fmap :: (a0 -> b) -> Result a a0 -> Result a b #

(<$) :: a0 -> Result a b -> Result a a0 #

Applicative (Result a) Source # 
Instance details

Defined in Verismith.Result

Methods

pure :: a0 -> Result a a0 #

(<*>) :: Result a (a0 -> b) -> Result a a0 -> Result a b #

liftA2 :: (a0 -> b -> c) -> Result a a0 -> Result a b -> Result a c #

(*>) :: Result a a0 -> Result a b -> Result a b #

(<*) :: Result a a0 -> Result a b -> Result a a0 #

MonadBase (Result a) (Result a) Source # 
Instance details

Defined in Verismith.Result

Methods

liftBase :: Result a α -> Result a α #

(Eq a, Eq b) => Eq (Result a b) Source # 
Instance details

Defined in Verismith.Result

Methods

(==) :: Result a b -> Result a b -> Bool #

(/=) :: Result a b -> Result a b -> Bool #

(Show a, Show b) => Show (Result a b) Source # 
Instance details

Defined in Verismith.Result

Methods

showsPrec :: Int -> Result a b -> ShowS #

show :: Result a b -> String #

showList :: [Result a b] -> ShowS #

Semigroup (Result a b) Source # 
Instance details

Defined in Verismith.Result

Methods

(<>) :: Result a b -> Result a b -> Result a b #

sconcat :: NonEmpty (Result a b) -> Result a b #

stimes :: Integral b0 => b0 -> Result a b -> Result a b #

Monoid b => Monoid (Result a b) Source # 
Instance details

Defined in Verismith.Result

Methods

mempty :: Result a b #

mappend :: Result a b -> Result a b -> Result a b #

mconcat :: [Result a b] -> Result a b #

newtype ResultT a m b Source #

The transformer for the Result type. This

Constructors

ResultT 

Fields

Instances
MonadBaseControl IO m => MonadBaseControl IO (ResultT a m) Source # 
Instance details

Defined in Verismith.Result

Associated Types

type StM (ResultT a m) a :: Type #

Methods

liftBaseWith :: (RunInBase (ResultT a m) IO -> IO a0) -> ResultT a m a0 #

restoreM :: StM (ResultT a m) a0 -> ResultT a m a0 #

MonadBase b m => MonadBase b (ResultT a m) Source # 
Instance details

Defined in Verismith.Result

Methods

liftBase :: b α -> ResultT a m α #

MonadTransControl (ResultT a) Source # 
Instance details

Defined in Verismith.Result

Associated Types

type StT (ResultT a) a :: Type #

Methods

liftWith :: Monad m => (Run (ResultT a) -> m a0) -> ResultT a m a0 #

restoreT :: Monad m => m (StT (ResultT a) a0) -> ResultT a m a0 #

MonadTrans (ResultT e) Source # 
Instance details

Defined in Verismith.Result

Methods

lift :: Monad m => m a -> ResultT e m a #

Monad m => Monad (ResultT a m) Source # 
Instance details

Defined in Verismith.Result

Methods

(>>=) :: ResultT a m a0 -> (a0 -> ResultT a m b) -> ResultT a m b #

(>>) :: ResultT a m a0 -> ResultT a m b -> ResultT a m b #

return :: a0 -> ResultT a m a0 #

fail :: String -> ResultT a m a0 #

Functor f => Functor (ResultT a f) Source # 
Instance details

Defined in Verismith.Result

Methods

fmap :: (a0 -> b) -> ResultT a f a0 -> ResultT a f b #

(<$) :: a0 -> ResultT a f b -> ResultT a f a0 #

Monad m => Applicative (ResultT a m) Source # 
Instance details

Defined in Verismith.Result

Methods

pure :: a0 -> ResultT a m a0 #

(<*>) :: ResultT a m (a0 -> b) -> ResultT a m a0 -> ResultT a m b #

liftA2 :: (a0 -> b -> c) -> ResultT a m a0 -> ResultT a m b -> ResultT a m c #

(*>) :: ResultT a m a0 -> ResultT a m b -> ResultT a m b #

(<*) :: ResultT a m a0 -> ResultT a m b -> ResultT a m a0 #

MonadIO m => MonadIO (ResultT a m) Source # 
Instance details

Defined in Verismith.Result

Methods

liftIO :: IO a0 -> ResultT a m a0 #

(MonadSh m, Monoid a) => MonadSh (ResultT a m) Source # 
Instance details

Defined in Verismith.Result

Methods

liftSh :: Sh a0 -> ResultT a m a0 #

type StT (ResultT a) b Source # 
Instance details

Defined in Verismith.Result

type StT (ResultT a) b = Result a b
type StM (ResultT a m) b Source # 
Instance details

Defined in Verismith.Result

type StM (ResultT a m) b = ComposeSt (ResultT a) m b

(<?>) :: (Monad m, Monoid a) => ResultT a m b -> a -> ResultT a m b infix 0 Source #

annotate :: (Monad m, Monoid a) => a -> ResultT a m b -> ResultT a m b Source #