Hard cut (!) versus soft-cut (*->) for pruning a recursive search: which preserves debuggability?
I am writing a recursive predicate in SWI-Prolog that searches a large fact base and should commit to the first matching branch once a condition succeeds. Two documented mechanisms seem applicable: the classic cut operator ! , which prunes all remaining choice points for the clause, and the soft-cut construct Condition *-> Then ; Else , which commits only