Next: , Previous: , Up: mpg-bpr   [Contents][Index]


11.3.102 if/3

Synopsis

if(+P,+Q,+R)

If P then Q else R, for all solution of P.

Arguments

:P

callable, must be nonvar

:Q

callable, must be nonvar

:R

callable, must be nonvar

Description

Analogous to

if P then Q else R

but differs from P -> Q ; R in that if(P, Q, R) explores all solutions to the goal P. There is a small time penalty for this—if P is known to have only one solution of interest, then the form P -> Q ; R should be preferred.

This is normally regarded as part of the syntax of the language, but it is like a built-in predicate in that you can write call(if(P,Q,R)), with identical effect if it does not contain any cuts.

Cuts in P do not make sense, but are allowed, their scope being the goal P. The scope of cuts in Q and R extends to the containing clause.

Backtracking

Depends on the arguments.

Exceptions

Call errors (see ref-sem-exc).

See Also

ref-sem.


Send feedback on this subject.