2010-11-18 2 views
0

Вопрос просто ... почему это не работает?Пролог, рекурсивные функции и возвращаемое значение аргументом функции

replace([l|[r|[r|[l|R]]]], Result) :- append([f,f],R,Result). 

replace([HEAD|TAIL], Result) :- replace(TAIL, Y), append(HEAD,Y,Result). 

?- replace([l,r,r,l,r,r],X).

возвращает

X = [f, f, r, r] .

но

?- replace([r,l,r,r,l,r,r],X).

дает

false

почему нет X = [r, f, f, r, r] .?

помогите пожалуйста.


PS. Я все еще изучаю английский, но иногда я делаю глупые ошибки. Я делаю все возможное, написание вопросов и ответов на английском языке, однако я был бы очень рад, если вы отредактируете мой пост в случае каких-либо ошибок. Я обещаю, ваши усилия не будут потрачены впустую.

ответ

2

Вам нужно добавить ([HEAD], Y, Результат) вместо append (HEAD, Y, Result). ГОЛОВА - это не список.

+0

ничего себе ... спасибо .. теперь это так очевидно :) – noisy

Смежные вопросы