Я пытаюсь написать правило на Прологе с названием slope_of_line, которое имеет три аргумента. Первые два аргумента - это пары, представляющие две точки на декартовой координатной плоскости. Он должен возвращать наклон линии между двумя точками. Я продолжаю получать сообщение об ошибке и неправильные выходные данные каждый раз, когда запускаю его в SWI-Prolog.
Вот что я написал вместе со своим тестовым кодом.
slope_of_line([H|T],[H1|T1],X) :- !.
slope_of_line is (T-T1)/(H1-H).
:- nl, write('slope_of_line/3:'), nl.
:- write(' 1: '), slope_of_line([2 | 4], [4 | 6], X), write(X), nl.
:- write(' 2: '), slope_of_line([1 | 3], [-5 | 13], X), write(X), nl.
:- write(' 3: '), slope_of_line([3 | -6], [-4 | 7], X), write(X), nl.
Каждый раз, когда я запускаю Правило, я продолжаю получать этот вывод:
ERROR: No permission to modify static procedure `(is)/2'
slope_of_line/3:
1: _4920
2: _4920
3: _4920
Какие изменения мне нужно сделать, чтобы это работало? Любая помощь будет принята с благодарностью. Спасибо!