我想打印矩阵,每行都在一个单独的行中,例如
?- print_matrix([[a,b,c],[d,e,f]]).
我想得到
[a,b,c]
[d,e,f]
答案 0 :(得分:2)
?- maplist(\X^(writeq(X),nl),[[a,b,c],[d,e,f]]). [a,b,c] [d,e,f] true.
使用library(lambda)。或者:
writeqln(X) :- writeq(X), nl. ?- maplist(writeqln,[[a,b,c],[d,e,f]]).
答案 1 :(得分:1)
最简单的方法是在递归规则中使用write
和nl
,如下所示:
print_matrix([]).
print_matrix([H|T]) :- write(H), nl, print_matrix(T).
这是用于列表处理的“经典”Prolog解决方案,具有处理空列表的事实,以及逐个处理标题元素的规则。