dynamic evaluate(EvaluationType type, ContextModel context)

Evaluates this expression according to given type and context.

Source

evaluate(EvaluationType type, ContextModel context) {
  var argEval = arg.evaluate(type, context);

  if (type == EvaluationType.REAL) {
    return Math.tan(argEval);
  }

  if (type == EvaluationType.VECTOR) {
    //TODO apply function to all vector elements
  }

  throw new UnimplementedError('Can not evaluate tan on ${type} yet.');
}