Hello Andrey,
I think we have found something to improve in some functions, namely those capable to process both numeric and symbolic data (i.e. like UnitsOf(...));
Consider the following problem:
f(x):UnitsOf(x)+UnitsOf(y)
I think that ideally only UnitsOf(y) should be preprocessed, because UnitsOf(x) contains the argument of the function f, that is an unknown not yet defined for his usage, thus the evaluation should be done only when the function is called.
I know it is possible to use line and eval to accomplish the task, but seems to me that would be more consistent to have this natively. The question is: it is possible for you to teach the assignment operator to skip the preprocessing of whatever(x), where x is argument of the LHS? Alternatively, there is a way for developers to distinguish if the input argument contains the argument of a parent function (something like context.IsArgument(Term) / context.IsArgument(Entry))?