When I try to compile this it chokes on the “visit” phrase. Is there something I’m missing? Is what I’m trying to do impossible?
A tree cursor is a kind of object.
To visit (cursor - a tree cursor) with trule (TR - a tree cursors based rule producing lists of numbers) and vrule (R - a rule):
To visit binary (cursor - a tree cursor) with (R - a rule):
visit cursor with trule binary rule and vrule R;
Traversal is a tree cursor based rulebook producing lists of numbers.
Traversal rule for a tree cursor (called cursor) (this is the binary rule):
Lab is a room.
I’m not 100% sure, but I think the compiler is a bit blurry about the difference between a rule and a rulebook on purpose – it accepts either as a phrase argument type but can internally cast a rule to a rulebook. If I’m not mistaken, it only understands the rulebook level as being able to produce anything.
Your code compiles if you replace binary rule with traversal rules/traversal rulebook, but I’m not sure that it will still do what you want. It will also compile if you change the specification for the TR parameter to (TR - a rule).