Make this rule-based phrase compile

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):
	do nothing;
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):
	do nothing;
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).

Ah. That’s annoying, but I can get around it. Thanks!