Prolog:显示每个子列表的每个元素

Geo*_*nza 3 prolog

我有一大堆较小的子列表,如:

 [ [005,Chester,100],[001,Bob,99],[002,Andy,77] ]
Run Code Online (Sandbox Code Playgroud)

我正在尝试制作一个循环显示整个列表的显示"功能",并显示如下:

 No.1: ID="005", Name="Chester", Grade=100
 No.2: ID="001", Name="Bob", Grade=99
 No.3: ID="002", Name="Andy", Grade=77
Run Code Online (Sandbox Code Playgroud)

在prolog中思考是很难的,但我正在努力进行递归思考.非常感谢任何帮助!

Cap*_*liC 5

只有递归来处理数据结构 - 我认为 - 是Prolog的主要问题.

我们所知道的数据结构缺乏表现力,这些表现形式恰到好处,促进了两种扩展(如B-Prolog中的循环)和语言 - 如Picat.

无论如何,简单的Prolog它足以解决你的问题:

show_records(L) :-
    forall(nth1(N, L, E), format('No.~d:ID="~s",Name="~s",Grade="~d"~n', [N|E])).
Run Code Online (Sandbox Code Playgroud)

产量

?- show_records([ ['005','Chester',100],['001','Bob',99],['002','Andy',77] ]).
No.1:ID="005",Name="Chester",Grade="100"
No.2:ID="001",Name="Bob",Grade="99"
No.3:ID="002",Name="Andy",Grade="77"
true.
Run Code Online (Sandbox Code Playgroud)