call/1 and once/1

The call(Goal) treats Goal as a subgoal. It is equivalent to Goal. The call once(Goal) is equivalent to Goal but can only succeed at most once. It is implemented as follows:
      once(Goal):-call(Goal),!.



Neng-Fa Zhou 2012-01-03