¿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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta