pub fn app(f: Expr, mut x: Expr) -> Self {
        let mut nodes = f.nodes;
        let f_id = Id::from(nodes.len()-1);
        x.shift_nodes(nodes.len() as i32);
        nodes.extend(x.nodes);
        let x_id = Id::from(nodes.len()-1);
        nodes.push(Lambda::App([f_id, x_id]));
        Self::new(nodes)
    }
/// construct an Expr with a toplevel App node
construct an Expr with a toplevel App node
construct an Expr with a toplevel App node
pub fn app(f: Expr, mut x: Expr) -> Self {
        let mut nodes = f.nodes;
        let f_id = Id::from(nodes.len()-1);
        x.shift_nodes(nodes.len() as i32);
        nodes.extend(x.nodes);
        let x_id = Id::from(nodes.len()-1);
        nodes.push(Lambda::App([f_id, x_id]));
        Self::new(nodes)
    }
pub fn app ( f : Expr , mut x : Expr ) -> Self { let mut nodes = f . nodes ; let f_id = Id :: from ( nodes . len ( ) - 1 ) ; x . shift_nodes ( nodes . len ( ) as i32 ) ; nodes . extend ( x . nodes ) ; let x_id = Id :: from ( nodes . len ( ) - 1 ) ; nodes . push ( Lambda :: App ( [ f_id , x_id ] ) ) ; Self :: new ( nodes ) }
construct an Expr with a toplevel App node
construct an Expr with a toplevel App node
f
Expr
x
Expr
f
Expr
x
Expr