Opierając się na porządku reguł

Do obliczenia odległości Hamminga między dwiema listami o tej samej długości używamfoldl(hamm, A, B, 0, R). z tą definicjąhamm/4:

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

Cięcie w pierwszej regule zapobiega niepotrzebnemu cofaniu. Druga zasada mogła jednak zostać napisana inaczej:

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

ihamm2/4 będzie nadal poprawny razem zfoldl/5 lub w przypadku zapytań, w których A i B są uziemione.

Czy więc istnieje naprawdę dobry powód, by preferować ten jeden nad drugim? A może istnieje powód, aby zachować zasady w tej kolejności lub przełączać je?

Wiem, że zapytanie

hamm(a, B, 0, 1).

jest fałszywy, podczas gdy

hamm2(a, B, 0, 1).

jest prawdą, ale nie mogę zdecydować, który z nich ma więcej sensu. . .

questionAnswers(2)

yourAnswerToTheQuestion