rendered paste bodyvoid appendToScope(_scope* s, perameterDefenition perameter, expressionToDelegate e){
if(perameter.func){
s.add(perameter.name, unbox!(procedure)(e.evaluate()));
}
else if(perameter.eager){
boxToDelegate* returnValue = new boxToDelegate;
returnValue.value = e.evaluate();
s.add(perameter.name, &returnValue.execute);
}
//lazy
else
s.add(perameter.name, cast(procedure)&e.evaluate);
}
Box define(expressionToDelegate[] operands){
if(operands.length != 2)
throw new Exception("Define should only have two operands");
perameterDefenition perameter = unbox!(perameterDefenition)(operands[0].evaluate());
/*
if(perameter.func){
operands[0].parentScope.add(perameter.name, unbox!(procedure)(operands[1].evaluate()));
}
else if(perameter.eager){
boxToDelegate* returnValue = new boxToDelegate;
returnValue.value = operands[1].evaluate();
operands[0].parentScope.add(perameter.name, &returnValue.execute);
}
//lazy
else
operands[0].parentScope.add(perameter.name, cast(procedure)&operands[1].evaluate);
*/
appendToScope(operands[0].parentScope, perameter, operands[1]);
//good return value?
return box(perameter.name);
}