2011-12-13 83 views
-1

我嘗試構建將附加隨機數的子列表結果列表的謂詞。將元素附加到列表中的序言遞歸

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分配給結果。我做錯了什麼?

+0

你也應該張貼nested_predicate的定義,或很難嘗試東西.. –

回答

2

在Prolog中,您不能爲變量「賦值」。此外,在您的代碼中,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).