Feel.Backend.Interpreter.Walk (feel v0.1.0)

Copy Markdown View Source

The walk of the nodes that Feel.Backend.Interpreter runs, as the text of a module that is made twice:

use Feel.Backend.Interpreter.Walk, monitored: false | true defines eval/3, the evaluation of a node, and what it needs. The two are one text so that the run without a monitor is the run it was and not a run that asks at each node whether there is one: the question was a match on a field of Feel.Runtime.Env at each of the nodes, which is about 7 ns for each, 3 to 14% of a run of a few operations on names, and the count of reductions does not see it (it is the same for both). What differs is in plain/0 and monitored/0: eval/3, and logic_operands/5 and between_high/5, which say how an operand that is read under a condition is evaluated.

A new kind of node is a clause of value_of/3 here, and it is in both walks.