Higher-Order Extensions to Prolog