如何访问在prolog中创建的列表?

时间:2012-01-29 19:28:21

标签: list prolog store

我需要编写一个代码来访问创建的列表。但我不知道如何,我读了这个问题: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).

我需要创建列表。我该怎么办 ?这让我感到困惑。

1 个答案:

答案 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',因此您在代码中看到的测试。