Predikát $=$$-$$>$

Vytváření predikátů vyššího řádu v této části uzavřeme zkonstruováním =->/4 pro řetězené volání. Tento predikát odpovídá skládání funkcí, jak jej známe z funkcionálního programování. Protože v našem implementačním jazyce nepracujeme s funkcemi, ale s predikáty, stanovme úmluvou, že funkční hodnota bude vydávána v posledním argumentu.

=->/4 je definován jako infixní operátor s pravou asociativitou a lze jej použít nejen společně s výše zavedenými predikáty vyššího řádu, ale rovněž s kterýmikoli jinými predikáty vyhovujícími úmluvě:

=->(P1,P2,I,O):-
        :-@ [P2,I,Ot],
        :-@ [P1,Ot,O].
Nejdříve je zavolán cíl $P2$. Jeho poslední argument, jenž obsahuje výsledek, je připojen k argumentům termu $P1$. Výsledek volání takto vzniklého cíle je konečně předán na výstup -- je to výsledek zřetězeného volání predikátů $P2$$P1$.



dvorka 2013-12-31