This feels weird - esp with the runner param in there. I had to look at it a few times to understand what you meant by bindings. The macro forms of this & generator don't seem to be buying much - why not just have the star versions where you pass a fn? (And make them the non-* versions)