Should `evaluate()` accept Node inputs?
This is sort of the reverse question to #2458 for resolve. Currently, the top-level evaluate function only accepts strings as the items to be evaluated, but in implementation, it always just parses any string operands to Nodes. So by analogy to simplify, should evaluate be extended to also directly accept Nodes?
In an only tangentially related implementation question, evaluate always invokes compile on the Nodes, and then invokes evaluate on the results of that. But Node itself has an evaluate method; wouldn't it be potentially a bit cleaner to call that directly (in case the implementation of evaluate on a Node is ever changed for some reason to something besides just to compile itself and call evaluate on the result?
Ah, I like that idea, makes sense 👍