module orelang.operator.SubOperator; import orelang.operator.IOperator, orelang.Engine, orelang.Value; class SubOperator : IOperator { /** * call */ public Value call(Engine engine, Value[] args) { Value ret = engine.eval(args[0]); if (args.length == 1) { ret.mulTo(new Value(-1)); } foreach (arg; args[1..$]) { Value v = engine.eval(arg); ret.subTo(v); } return ret; } }