All pastes #757154 Raw Edit

Untitled

public text v1 · immutable
·published 2007-11-01 00:56 UTC
rendered paste body
void 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);
}