@Override
    public ZemObject eval(Interpreter interpreter) {
        if(arguments.size() < 1){
        	return null;
        }
        Node node = arguments.get(0);
        UserFunction fun = null;
        
        if(node instanceof VariableNode){
        	fun = (UserFunction) interpreter.getSymbolTable().get(((VariableNode)node).getName());	
        }
        if(node instanceof LambdaNode){
        	fun = (UserFunction)((LambdaNode)node).eval(interpreter);
        }
        
        if(fun == null){
    		return null;
    	}
        
        if(fun.getParameterCount() != 1){
        	return null;
        }
        
        String continuationName = fun.getParameterName(0);
        
        List<ZemObject> args = new ArrayList<ZemObject>(1);
        args.add(new ZemNumber("99"));
        
        Interpreter localInterpreter = new Interpreter();
        localInterpreter.setSymbolTable(fun.getEnv());
        
        return localInterpreter.callFunction(continuationName, args, getPosition());
    }