libriscv-0.1.0.0: A versatile, flexible and executable formal model for the RISC-V architecture.
Safe HaskellNone
LanguageHaskell2010

LibRISCV.Effects.Expressions.Language

Description

Implements an effect for evaluation of the Expr abstraction.

Synopsis

Documentation

data ExprEval v r where Source #

Constructors

IsTrue :: forall v. Expr v -> ExprEval v Bool 
IsFalse :: forall v. Expr v -> ExprEval v Bool 
Eval :: forall v. Expr v -> ExprEval v v 

eval :: forall v (effs :: [Type -> Type]). Member (ExprEval v) effs => Expr v -> Eff effs v Source #

defaultEval :: forall (m :: Type -> Type) v. MonadIO m => (v -> Bool, Expr v -> v) -> ExprEval v ~> m Source #

ifExprM :: forall v (r :: [Type -> Type]) v'. Member (ExprEval v) r => Expr v -> Eff r v' -> Eff r v' -> Eff r v' Source #

Like ifM but with internal expression evaluation.

whenExprM :: forall v (r :: [Type -> Type]). Member (ExprEval v) r => Expr v -> Eff r () -> Eff r () Source #

Like whenM but with internal expression evaluation.

unlessExprM :: forall v (r :: [Type -> Type]). Member (ExprEval v) r => Expr v -> Eff r () -> Eff r () Source #

Like unlessM but with internal expression evaluation.