Implement evaluation cache
As of now, every call to
Expression#evaluate() reevaluates the whole expression.
This isn't a problem in and of itself, but it's a common error when using the library and creates an annoying performance hit.
- Find all scenarios where this could fail
- If an expression contains non-deterministic results, the value should not be cached
- Cache should be cleaned if variable changes
What happens when using
- Create tests for expression evaluate
PS: We attempted to fix this with documentation and warnings... but still creates a problem. An internal (at least partial) solution shouldn't be hard to accomplish... I think...