Existující podpora

Míra podpory pro programování vyššího řádu je v interpretech jazyka Prolog různá. V některých jsou pouze predikáty určené normou jazyka, v jiných se naopak můžeme setkat jak s vestavěnou podporou, tak s připravenou sadou užitečných predikátů vyššího řádu.

Jak známo, v Prologu mají data i kód stejnou syntaxi a při interpretaci programů mají také podobnou reprezentaci. Aby bylo vůbec možné programování vyššího řádu realizovat, musejí být k dispozici predikáty pro vytváření kódu z dat. Do jazyka Prolog je k tomuto účelu zařazen standardní predikát call/1, který svůj jediný parametr v podobě datového termu interpretuje jako kód a vykoná jej. Typický způsob použití call/1 je spojen s operátorem univ:

?- G =.. [mod, 23, 7, X],
   call(G).
G = mod(23, 7, 2)
X = 2
Yes
Základ podpory programování vyššího řádu tvořený call/1 je někdy ještě doplněn variantami predikátů apply/2call/n:

Predikát apply/2 je z hlediska logického programování čistší. Ani on však není běžnou součástí prologovských interpretů.

dvorka 2013-12-31