module orelang.Closure;
import orelang.operator.IOperator,
       orelang.Engine,
       orelang.Value;

class Closure {
  public {
    Engine    engine;
    IOperator operator;
  }

  this (Engine engine, IOperator operator) {
    this.engine   = engine;
    this.operator = operator;
  }

  Value eval(Value[] args) {
    return this.operator.call(this.engine, args);
  }
}