Пролог рекурсия, которая добавляет элементы в список - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь построить предикат, который добавит случайный список результатов списка подсписков.

my_predicate([], AnotherList, []).
my_predicate([Head|List], AnotherList, Result):-
  random(0,5,N),
  nested_predicate(N, Head, AnotherList, SM),
  my_predicate(List, AnotherList, Result),
  append(SM, Result, SM2),
  write(SM2).

И все почти нормально, но я никак не могу назначить SM2 для Result. Что я так не так делаю?

1 Ответ

2 голосов
/ 13 декабря 2011

В Прологе нельзя «присвоить» значение переменной. Кроме того, в вашем коде Result всегда будет привязан к пустому списку.

Я предполагаю, что вы хотите что-то вроде этого:

my_predicate([], AnotherList, []).
my_predicate([Head|List], AnotherList, Result):-
  random(0,5,N),
  nested_predicate(N, Head, AnotherList, SM),
  my_predicate(List, AnotherList, SM2),
  append(SM, SM2, Result),
  write(Result).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...