Using delegates as function parameters

It makes no sense why this requires such a hacky unintuitive solution. And it’s only half of a solution, really, e.g. what if I wanted to create an interface that accepts a delegate parameter?