Que utilidade tem if_ / 3?
O predicadoif_/3
parece serbastante popular entre os poucos colaboradores principais na parte Prolog do Stack Overflow.
Esse predicado é implementado como tal, cortesia de @false:
if_(If_1, Then_0, Else_0) :-
call(If_1, T),
( T == true -> call(Then_0)
; T == false -> call(Else_0)
; nonvar(T) -> throw(error(type_error(boolean,T),_))
; /* var(T) */ throw(error(instantiation_error,_))
).
No entanto, não consegui encontrar umclaro, simples e conciso explicação sobre o que esse predicado faz e qual o uso comparado, por exemplo. a clássica construção if-then-else do Prologif -> then ; else
.
A maioria dos links que encontrei usam diretamente esse predicado e fornecem poucas explicações sobre por que ele é usado, que um não especialista em Prolog poderia entender facilmente.