@Override final public NodeValue eval(Binding binding, FunctionEnv env) { NodeValue s = evalSpecial(binding, env) ; if ( s != null ) return s ; List<NodeValue> argsEval = new ArrayList<NodeValue>() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { NodeValue x = eval(binding, env, getArg(i)) ; argsEval.add(x) ; } return eval(argsEval, env) ; }
@Override final public NodeValue eval(Binding binding, FunctionEnv env) { NodeValue s = evalSpecial(binding, env) ; if ( s != null ) return s ; List<NodeValue> argsEval = new ArrayList<NodeValue>() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { NodeValue x = eval(binding, env, getArg(i)) ; argsEval.add(x) ; } return eval(argsEval, env) ; }
@Override public Expr copySubstitute(Binding binding, boolean foldConstants) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { Expr e = getArg(i) ; e = e.copySubstitute(binding, foldConstants) ; newArgs.add(e) ; } return copy(newArgs) ; }
@Override public Expr copySubstitute(Binding binding, boolean foldConstants) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { Expr e = getArg(i) ; e = e.copySubstitute(binding, foldConstants) ; newArgs.add(e) ; } return copy(newArgs) ; }
@Override public Expr applyNodeTransform(NodeTransform transform) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { Expr e = getArg(i) ; e = e.applyNodeTransform(transform) ; newArgs.add(e) ; } return copy(newArgs) ; }
@Override public Expr applyNodeTransform(NodeTransform transform) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) { Expr e = getArg(i) ; e = e.applyNodeTransform(transform) ; newArgs.add(e) ; } return copy(newArgs) ; }