pub enum GenericAction<Head, Leaf>{
Let(Span, Leaf, GenericExpr<Head, Leaf>),
Set(Span, Head, Vec<GenericExpr<Head, Leaf>>, GenericExpr<Head, Leaf>),
Change(Span, Change, Head, Vec<GenericExpr<Head, Leaf>>),
Union(Span, GenericExpr<Head, Leaf>, GenericExpr<Head, Leaf>),
Panic(Span, String),
Expr(Span, GenericExpr<Head, Leaf>),
}Variants§
Let(Span, Leaf, GenericExpr<Head, Leaf>)
Bind a variable to a particular datatype or primitive.
At the top level (in a [Command::Action]), this defines a global variable.
In a [Command::Rule], this defines a local variable in the actions.
Set(Span, Head, Vec<GenericExpr<Head, Leaf>>, GenericExpr<Head, Leaf>)
set a function to a particular result.
set should not be used on datatypes-
instead, use union.
Change(Span, Change, Head, Vec<GenericExpr<Head, Leaf>>)
Delete or subsume (mark as hidden from future rewrites and unextractable) an entry from a function.
Union(Span, GenericExpr<Head, Leaf>, GenericExpr<Head, Leaf>)
union two datatypes, making them equal
in the implicit, global equality relation
of egglog.
All rules match modulo this equality relation.
Example:
(datatype Math (Num i64))
(union (Num 1) (Num 2)); Define that Num 1 and Num 2 are equivalent
(extract (Num 1)); Extracts Num 1
(extract (Num 2)); Extracts Num 1Panic(Span, String)
Expr(Span, GenericExpr<Head, Leaf>)
Implementations§
Source§impl<Head, Leaf> GenericAction<Head, Leaf>
impl<Head, Leaf> GenericAction<Head, Leaf>
pub fn visit_vars(&self, f: &mut impl FnMut(&Span, &Leaf))
pub fn map_exprs( &self, f: &mut impl FnMut(&GenericExpr<Head, Leaf>) -> GenericExpr<Head, Leaf>, ) -> Self
Sourcepub fn visit_exprs(
self,
f: &mut impl FnMut(GenericExpr<Head, Leaf>) -> GenericExpr<Head, Leaf>,
) -> Self
pub fn visit_exprs( self, f: &mut impl FnMut(GenericExpr<Head, Leaf>) -> GenericExpr<Head, Leaf>, ) -> Self
Applys f to all sub-expressions (including self)
bottom-up, collecting the results.
pub fn subst( &self, subst: &mut impl FnMut(&Span, &Leaf) -> GenericExpr<Head, Leaf>, ) -> Self
pub fn map_def_use(self, fvar: &mut impl FnMut(Leaf, bool) -> Leaf) -> Self
Sourcepub fn map_symbols<Head2, Leaf2>(
self,
head: &mut impl FnMut(Head) -> Head2,
leaf: &mut impl FnMut(Leaf) -> Leaf2,
) -> GenericAction<Head2, Leaf2>
pub fn map_symbols<Head2, Leaf2>( self, head: &mut impl FnMut(Head) -> Head2, leaf: &mut impl FnMut(Leaf) -> Leaf2, ) -> GenericAction<Head2, Leaf2>
Applies the provided head and leaf mappings to the action and all nested expressions.
Sourcepub fn make_unresolved(self) -> GenericAction<String, String>
pub fn make_unresolved(self) -> GenericAction<String, String>
Converts the action into its unresolved representation using String by formatting heads and leaves.
Trait Implementations§
Source§impl<Head, Leaf> Clone for GenericAction<Head, Leaf>
impl<Head, Leaf> Clone for GenericAction<Head, Leaf>
Source§fn clone(&self) -> GenericAction<Head, Leaf>
fn clone(&self) -> GenericAction<Head, Leaf>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more