Переменные в Прологе начинаются с буквы нижнего или верхнего регистра.Проблема в вашем коде в том, что вы написали double
вместо Double
.Исправление кода:
double_list([],[]).
double_list([H|T], [[H, Double]| List]):-
Double is H*2,
double_list(T, List).
дает ожидаемый ответ на ваш запрос:
| ?- double_list([2,3,6,10], List).
List = [[2, 4], [3, 6], [6, 12], [10, 20]]
yes
Некоторые системы Prolog способны обнаружить ошибку в вашем коде.Например, используя SICStus Prolog, мы получаем:
* invalid LHS in arithmetic expression: double