Unter Berufung auf die Reihenfolge der Regeln

Um die Hamming-Distanz zwischen zwei Listen gleicher Länge zu berechnen, benutze ichfoldl(hamm, A, B, 0, R). mit dieser Definition vonhamm/4:

hamm(A, A, V, V) :- !.
hamm(A, B, V0, V1) :- A \= B, V1 is V0 + 1.

Der Cut in der ersten Regel verhindert das unnötige Backtracking. Die zweite Regel hätte jedoch anders geschrieben werden können:

hamm2(A, A, V, V) :- !.
hamm2(_, _, V0, V1) :- V1 is V0 + 1.

undhamm2/4 wird zusammen mit noch korrekt seinfoldl/5 oder für Abfragen, bei denen sowohl A als auch B gemahlen sind.

Gibt es also einen guten Grund, den einen dem anderen vorzuziehen? Oder gibt es einen Grund, die Regeln in dieser Reihenfolge beizubehalten oder zu vertauschen?

Ich weiß, dass die Abfrage

hamm(a, B, 0, 1).

ist falsch, während

hamm2(a, B, 0, 1).

ist wahr, aber ich kann mich nicht so recht entscheiden, welches sinnvoller ist. . .

Antworten auf die Frage(2)

Ihre Antwort auf die Frage