2012-01-29 24 views
1

我需要編寫一個應該訪問創建列表的代碼。但我不知道怎麼了,我看這個問題:How do I store and access a list within a variable in Prolog?如何訪問在序言中創建的列表?

,但它不是我的問題,我創建列表,此代碼:

p([Head|Tail]):- 
read(Head), 
p([Tail|Taile]). 
my_write([Head|Tail]):- write(Head),nl,my_write(Tail). 

,我需要創建的列表。我該怎麼辦 ?這讓我感到困惑。

+0

沒有一個遞歸規則包含基本情況。 – 0605002 2012-01-29 19:41:49

+0

那我該怎麼辦?如何可以存儲數據?????? – zahraTZ 2012-01-29 19:52:58

回答

1

嘗試

p(L) :- 
    ( read(Head), 
    Head \= end_of_file 
    -> p(Tail), 
    L = [Head|Tail] 
    ; L = [] 
). 

Prolog的設計多爲象徵性的處理,IO,是基於副作用,它往往容易出錯。

請注意,讀/ 1它實際上是一個非常強大的「解析器」,能夠處理廣義的Prolog術語(結構,表達式,列表和任意嵌套)。

在EOF中,SWI-Prolog返回原子'end_of_file',因此您在代碼中看到的測試。