| ?- length(L,_), f(L,R).
L = [],
R = -1
; L = [_A],
R = -1
; L = [_A,_B],
R = -1
; L = [_A,_B,_C],
R = -1
; L = [_A,_B,_C,_D],
R = -1
; L = [_A,_B,_C,_D,_E],
R = -1
; L = [_A,_B,_C,_D,_E,_F],
R = -1
; L = [_A,_B,_C,_D,_E,_F,_G],
R = -1
; L = [_A,_B,_C,_D,_E,_F,_G,_H],
R = -1
; L = [_A,_B,_C,_D,_E,_F,_G,_H,_I],
R = -1
; L = [_A,_B,_C,_D,_E,_F,_G,_H,_I,_J],
R = -1 ...
Это звонит в колокол?
Хорошо, вот что я бы ответил:
f(L, -1) :-
length(L, _).
Хотя это теперь завершается и завершается ошибкой для f(L, 0)
, тогда как первоначальное определение петельные. Если вы настаиваете и на этой эквивалентности:
f(L, MinusOne) :-
length(L, _),
MinusOne = -1.