Eine (vordefinierte) Funktion hat Namens- und Typinformation (später) und Auswertungsvorschrift
das ist eigentlich ein Unterprogramm, muß aber als Methode in einem Objekt versteckt werden:
class Function { ... private Code code; } interface Code { Object evaluate (List<Object> argv); }
man braucht eine Klasse, die Code implementiert, aber von dieser nur ein einziges Objekt. Deswegen Klasse lokal und anonym:
static Function add() { return new Function( ... , new Code() { public Object evaluate(List<Object> argv) { return iGet(argv,0).add(iGet(argv,1)); } }); } static BigInteger iGet (List<Object> argv, int i) { return (BigInteger) argv.get(i); }