00001 #include <eoSymLambdaMutate.h>
00002 #include "FunDef.h"
00003 #include "NodeSelector.h"
00004
00005 Sym compress(Sym sym, NodeSelector& sel) {
00006
00007 return ::compress(sym);
00008
00009 NodeSelector::NodeSelection s = sel.select_node(sym);
00010
00011 Sym f = SymLambda( s.subtree());
00012
00013 if (f == s.subtree()) { return sym; }
00014
00015 return insert_subtree(sym, s.idx(), f);
00016 }
00017
00018 extern Sym expand(Sym sym, NodeSelector& sel) {
00019
00020 return ::expand_all(sym);
00021
00022 NodeSelector::NodeSelection s = sel.select_node(sym);
00023
00024 Sym f = SymUnlambda( s.subtree());
00025
00026 if (f == s.subtree()) { return sym; }
00027
00028 return insert_subtree(sym, s.idx(), f);
00029 }