Пролог, рекурсивные функции и возвращаемое значение по аргументу функции - PullRequest
0 голосов
/ 18 ноября 2010

Вопрос просто ... почему это не работает?

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.Я все еще учу английский, но иногда я делаю глупые ошибки.Я делаю все возможное, пишу вопросы и ответы на английском языке, однако я был бы очень рад, если вы отредактируете мой пост в случае каких-либо ошибок.Обещаю, ваши усилия не пропадут даром.

1 Ответ

2 голосов
/ 18 ноября 2010

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

...