wiki:GnappoProduct

Version 2 (modified by gnappo, 18 years ago) (diff)

--

public class GnappoProduct {

private static class SchemeExpressionPower implements SchemeExpression {

private SchemeExpression exp1; private SchemeExpression exp2; public SchemeExpressionPower(SchemeExpression expr1, SchemeExpression expr2) {

?
exp1=expr1; exp2=expr2;
?

} public SchemeValue evaluate(SchemeEnvironment env) throws SchemeException {

?
return SchemeFactoryManager.instance().create("SchemeExpressionInt",
((int)(Math.pow(exp1.evaluate(env).asInt(),exp2.evaluate(env).asInt())))).evaluate(env);
?

} public void prettyPrint(PrintStream out) {

?
out.print("(pow "); exp1.prettyPrint(out); out.print(" "); exp2.prettyPrint(out); out.print(")");
?

}

?

}

/**
  • @param args
  • @throws SchemeException
?

*/

?
public static void main(String[] args) throws SchemeException {

// TODO Auto-generated method stub SchemeFactoryManager fm = SchemeFactoryManager.instance(); fm.put("pow", new SchemeFactory() {

?
public SchemeExpression create(Object... args) {
return new SchemeExpressionPower((SchemeExpression)args[0],(SchemeExpression)args[1]);
?

}

?

}); SchemeExpression power = fm.create("pow",fm.create("SchemeExpressionInt",2),fm.create("SchemeExpressionInt",4)); power.prettyPrint(System.out); System.out.println(); System.out.print(power.evaluate(null));

}

}