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.
中进行合一
我有一个 "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.