Simplified higher order function overload resolution conditions
* it is more straightforward to exit on empty `Cons` instances instead of on their parents
** this removes e.g. functor call duplication in `foldr`