Мне нужна помощь в выяснении того, что не так с моим предикатом, чтобы удвоить все элементы списка. Я новичок в Prolog и, скорее всего, пропущу что-то очень очевидное. В основном мой предикат должен взять список (например, [1, 2, 3]) и создать список, в котором элементы удваиваются ([2, 3, 6]).Удвоение всех элементов в списке в Prolog
Вот то, что я до сих пор:
double_elements([], []).
double_elements([H|T], Doubled_list):-
X is H*2,
append([X], Doubled_list, Doubled_list),
double_elements(T, Doubled_list).
Однако, мой код в настоящее время просто не выдает «ложные» независимо от того, какие входы Даю. Любая помощь будет оценена по достоинству.
Go посмотреть документацию для 'Append ([X], Doubled_list, Doubled_list)'. Вы пытаетесь добавить '[X]' к чему-то и объединить его с тем же. Это всегда будет терпеть неудачу. – Enigmativity
В Prolog вы не можете обновлять одну и ту же переменную в предложении предиката. – lurker