pub fn programs(programs: Vec<Expr>) -> Self {
        let mut nodes = vec![];
        let mut root_ids = vec![];
        for mut p in programs.into_iter() {
            p.shift_nodes(nodes.len() as i32);
            nodes.extend(p.nodes);
            root_ids.push(Id::from(nodes.len() - 1));
        }
        nodes.push(Lambda::Programs(root_ids));
        Self::new(nodes)
    }
/// construct an Expr with a toplevel Programs node
construct an Expr with a toplevel Programs node
construct an Expr with a toplevel Programs node
pub fn programs(programs: Vec<Expr>) -> Self {
        let mut nodes = vec![];
        let mut root_ids = vec![];
        for mut p in programs.into_iter() {
            p.shift_nodes(nodes.len() as i32);
            nodes.extend(p.nodes);
            root_ids.push(Id::from(nodes.len() - 1));
        }
        nodes.push(Lambda::Programs(root_ids));
        Self::new(nodes)
    }
pub fn programs ( programs : Vec < Expr > ) -> Self { let mut nodes = vec ! [ ] ; let mut root_ids = vec ! [ ] ; for mut p in programs . into_iter ( ) { p . shift_nodes ( nodes . len ( ) as i32 ) ; nodes . extend ( p . nodes ) ; root_ids . push ( Id :: from ( nodes . len ( ) - 1 ) ) ; } nodes . push ( Lambda :: Programs ( root_ids ) ) ; Self :: new ( nodes ) }
construct an Expr with a toplevel Programs node
construct an Expr with a toplevel Programs node
programs
Vec<Expr>
programs
Vec<Expr>