Prolog写入列表功能退出条件

时间:2018-04-07 16:27:26

标签: list recursion prolog

我是Prolog的新手,我正在尝试定义一个编写列表的简单函数。到目前为止,我有;

printList([Head|Tail]) :-
  write(Head), nl,
  printList(Tail).

当我将此函数称为printList([[1,2],[3,4],[5,6]])时,它会写:

[1,2]
[3,4]
[5,6]
false

上面的输出是正确的,除了显示在列表底部的false。我假设显示为false,因为printList函数没有某种退出条件来控制列表为空时。我该怎么做?谢谢!

1 个答案:

答案 0 :(得分:3)

完全!!!你需要一个空列表规则。只需写下:

printList([]).
printList([Head|Tail]) :-
  write(Head), nl,
  printList(Tail).

示例:

?- printList([[1,2],[3,4],[5,6]]).
[1,2]
[3,4]
[5,6]
true.