[][src]Macro egg::recexpr

macro_rules! recexpr {
    ($e:expr) => { ... };
    ($e:expr, $($child:expr),*$(,)?) => { ... };
}

Utility macro to create an RecExpr.

Just a wrapper around enode!.

recexpr!(op, arg1, arg2, ...) desugars to RecExpr::from(enode!(op, arg1, arg2, ...)).

use egg::{*, recexpr as r};

define_language! {
    enum SimpleLanguage {
        Num(i32),
        Add = "+",
        Mul = "*",
    }
}

use SimpleLanguage::*;

let mut egraph: EGraph<SimpleLanguage, ()> = Default::default();

let one = egraph.add(enode!(Num(1)));
let two = egraph.add(enode!(Num(2)));
let three = egraph.add(enode!(Add, one, two));

let three_recexpr = r!(Add, r!(Num(1)), r!(Num(2)));
assert_eq!(three, egraph.add_expr(&three_recexpr));