¿Qué uso tiene if_ / 3?
El predicadoif_/3
parece serbastante popular entre los pocos contribuyentes principales en la parte Prolog de Stack Overflow.
Este predicado se implementa como tal, cortesía 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,_))
).
Sin embargo, no he podido encontrar unclaro, simple y conciso explicación de lo que hace este predicado y qué uso tiene en comparación con, p. La construcción clásica si-entonces-otro de Prologif -> then ; else
.
La mayoría de los enlaces que he encontrado utilizan directamente este predicado y proporcionan pocas explicaciones de por qué se usa, que un no experto en Prolog podría entender fácilmente.