Здесь есть три проблемы:
ваша версия для двух пустых списков должна объединить второй параметр с 0
, а не ED
, так как тогда он остается переменной free ,так:
euclidsqr([], [], <b>0</b>).
вы также используете ED
для объединения результата (в начале предложения), но вы используете ту же переменную в рекурсивном вызове (в конце списка), более тоговы не суммируете результат рекурсивного вызова, набирая (X-Y)*(X-Y)
:
euclidsqr([X|Xs], [Y|Ys], ED) :-
euclidsqr(Xs, Ys, <b>ED1</b>),
ED is <b>ED1 +</b> (X-Y)*(X-Y).
или складывая это вместе:
euclidsqr([], [], <b>0</b>).
euclidsqr([X|Xs], [Y|Ys], ED) :-
euclidsqr(Xs, Ys, <b>ED1</b>),
ED is <b>ED1 +</b> (X-Y)*(X-Y).