A aside. It's not the caller that knows how the lambda is going to be used, but the function that receives it. You can either forbid unsafe usages, or allow them but the function needs a way to say it is safe. Just spouting my not very considered opinions. Will shut up now.