Search code examples
prologoperatorsprolog-cut

Strange operator (!) in Prolog


hi(g,plus(A,B),int) :- hi(g,A,int),hi(g,B,int),!.  

in the above statement what does the '!' sign at the end of the statement do ?


Solution

  • That's the cut operator, which basically states "if we got up to here, don't backtrack."

    So, if both recursive calls succeed, the hi predicate will not retry them.