Prolog:获取 "list of lists" 中的第一个元素

Prolog: Obtain 1st element in "list of lists"

我有一个 "list of lists" 例如[[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] 统一步骤失败。

我绞尽脑汁已经绞尽脑汁好久了,但我无法弄清楚为什么会失败 - 谁能看出我哪里出错了?谢谢!

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

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

现在Top 与列表列表中第一个列表的第一个元素统一。请注意,您根本不必使用合一运算符 =,而是在 header.

中进行合一

Demo.