Confiando na ordem de regra

Para calcular a distância hamming entre duas listas do mesmo tamanho, eu usofoldl(hamm, A, B, 0, R). com esta definição dehamm/4:

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

O corte na primeira regra impede o retrocesso desnecessário. A segunda regra, no entanto, poderia ter sido escrita de forma diferente:

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

ehamm2/4 ainda estará correto junto comfoldl/5 ou para consultas em que tanto A quanto B são aterrados.

Então, há uma boa razão para preferir um sobre o outro? Ou há uma razão para manter as regras nessa ordem ou alterná-las?

Eu sei que a consulta

hamm(a, B, 0, 1).

é falso, enquanto

hamm2(a, B, 0, 1).

é verdade, mas não consigo decidir qual deles faz mais sentido. . .

questionAnswers(2)

yourAnswerToTheQuestion