hevm-0.53.0: Symbolic EVM Evaluator
Safe HaskellSafe-Inferred
LanguageGHC2021

EVM.Traversals

Description

 
Synopsis

Documentation

foldProp :: forall b. Monoid b => (forall a. Expr a -> b) -> b -> Prop -> b Source #

foldEContract :: forall b. Monoid b => (forall a. Expr a -> b) -> b -> Expr EContract -> b Source #

foldContract :: forall b. Monoid b => (forall a. Expr a -> b) -> b -> Contract -> b Source #

foldCode :: forall b. Monoid b => (forall a. Expr a -> b) -> ContractCode -> b Source #

foldExpr :: forall b c. Monoid b => (forall a. Expr a -> b) -> b -> Expr c -> b Source #

Recursively folds a given function over a given expression Recursion schemes do this & a lot more, but defining them over GADT's isn't worth the hassle

mapProp :: (forall a. Expr a -> Expr a) -> Prop -> Prop Source #

mapExpr :: (forall a. Expr a -> Expr a) -> Expr b -> Expr b Source #

mapExprM :: Monad m => (forall a. Expr a -> m (Expr a)) -> Expr b -> m (Expr b) Source #

mapPropM :: Monad m => (forall a. Expr a -> m (Expr a)) -> Prop -> m Prop Source #

mapEContractM :: Monad m => (forall a. Expr a -> m (Expr a)) -> Expr EContract -> m (Expr EContract) Source #

mapContractM :: Monad m => (forall a. Expr a -> m (Expr a)) -> Contract -> m Contract Source #

mapCodeM :: Monad m => (forall a. Expr a -> m (Expr a)) -> ContractCode -> m ContractCode Source #

class TraversableTerm a where Source #

Generic operations over AST terms

Methods

mapTerm :: (forall b. Expr b -> Expr b) -> a -> a Source #

foldTerm :: forall c. Monoid c => (forall b. Expr b -> c) -> c -> a -> c Source #

Instances

Instances details
TraversableTerm Prop Source # 
Instance details

Defined in EVM.Traversals

Methods

mapTerm :: (forall (b :: EType). Expr b -> Expr b) -> Prop -> Prop Source #

foldTerm :: Monoid c => (forall (b :: EType). Expr b -> c) -> c -> Prop -> c Source #

TraversableTerm (Expr a) Source # 
Instance details

Defined in EVM.Traversals

Methods

mapTerm :: (forall (b :: EType). Expr b -> Expr b) -> Expr a -> Expr a Source #

foldTerm :: Monoid c => (forall (b :: EType). Expr b -> c) -> c -> Expr a -> c Source #