module orelang.operator.ConsOperator; import orelang.operator.IOperator, orelang.Engine, orelang.Value; class ConsOperator : IOperator { /** * call */ public Value call(Engine engine, Value[] args) { Value car = engine.eval(args[0]); Value cdr = engine.eval(args[1]); Value[] ret = [car]; if (cdr.type == ValueType.Array) { foreach (elem; cdr.getArray) { ret ~= engine.eval(elem); } } else { ret ~= cdr; } return new Value(ret); } }