exported HOFs all do thunk

Changes: 
Some functions have a method whose final arg is a function.
The do block idiom doesn't work for those methods, so alternate methods
were added (exported functions with a single function arg only).

Motivations:
I expected a do block to work with `by`, and added it to the rest for consistency. I've seen this done elsewhere, so I assume it's non-controversial, but I'm not sure, so feel free to contradict.