I think mkscope should call the rule with the incoming bindings, not the empty map {} as it does now. I use a rule that needs bindings from the outside scope. However, I don't want the rule's new bindings to escape the inner scope. As a work-around, I used a slightly modified version of mkscope to do what I want.