我需要编写一个代码来访问创建的列表。但我不知道如何,我读了这个问题: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 :(得分:1)
试
p(L) :-
( read(Head),
Head \= end_of_file
-> p(Tail),
L = [Head|Tail]
; L = []
).
Prolog设计更多用于符号处理,IO,基于副作用,它经常容易出错。
请注意,read / 1它实际上是一个非常强大的“解析器”,能够处理通用的Prolog术语(结构,表达式,列表,任意嵌套)。
在EOF,SWI-Prolog返回原子'end_of_file',因此您在代码中看到的测试。