hevm-0.51.1: Ethereum virtual machine evaluator
Safe HaskellSafe-Inferred
LanguageGHC2021

EVM.Traversals

Description

 
Synopsis

Documentation

foldProp :: forall b. Monoid b => (forall a. Expr a -> b) -> b -> Prop -> 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 #

Recursively applies a given function to every node in a given expr instance Recursion schemes do this & a lot more, but defining them over GADT's isn't worth the hassle

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 #

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 #