Prolog:获取"列表列表中的第一个元素"

时间:2015-06-01 13:39:04

标签: prolog

我有一个"列表列表"例如[A,B,C],[A,B],[d,F]]。

我现在希望在屏幕上打印列表的第一个元素(即本例中的[A,B,C])。我以为我可以这样做:

testfunction(List):-
    List=[[Top]|Rest],
    write(Top),nl,nl.

但是,当我使用testfunction([[A,B,C],[A,B],[D,F]]).运行时,它似乎在List=[[Top]|Rest]统一步骤中失败。

我多年来一直绞尽脑汁,但我无法解决为什么会失败 - 有人能看出我出错的地方吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您需要使用垂直条[Top|Rest]语法两次才能从嵌套列表中提取元素,如下所示:

testfunction([[Top|_]|_]):-
    write(Top),nl,nl.

现在Top与列表列表中第一个列表的第一个元素统一起来。请注意,您根本不必使用统一运算符=,并在标题内进行统一。

Demo.