我有一大堆较小的子列表,如:
[ [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中思考是很难的,但我正在努力进行递归思考.非常感谢任何帮助!
只有递归来处理数据结构 - 我认为 - 是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)