Description
As Stream Evaluators have been evolving we are seeing a need to better handle differing types of data within evaluators. For example, allowing some to evaluate over individual values or arrays of values, like
sin(a) sin(a,b,c,d) sin([a,b,c,d])
The current structure of Evaluators makes this difficult and repetitive work.
Also, the hierarchy of classes behind evaluators can be confusing for developers creating new evaluators. For example, when to use a ComplexEvaluator vs a BooleanEvaluator.
A full refactoring of these classes will greatly enhance the usability and future evolution of evaluators.