Prolog LanguageHigher-Order Programming