Learning Higher-Order Programs without Meta-Interpretive Learning