Какая польза от if_ / 3?

Предикатif_/3 кажетсядовольно популярный среди немногих основных авторов в Прологе части переполнения стека.

Этот предикат реализован как таковой, благодаря @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,_))
   ).

Тем не менее, я не смог найтиясно, просто и кратко объяснение того, что делает этот предикат и как его используют по сравнению, например, с классическая конструкция Пролога "если-то-еще"if -> then ; else.

Большинство ссылок, которые я нашел, напрямую используют этот предикат и дают мало объяснений относительно того, почему он используется, что не специалист в Прологе мог легко понять.

Ответы на вопрос(2)

Ваш ответ на вопрос