在prolog中将字符串列表拆分为列表列表

在prolog中将字符串列表拆分为列表列表,prolog,Prolog,我请求学习Prolog,我想知道如何实现一个函数,将字符串列表转换为字符列表的有序列表。 例如: ?- f([sheep,dog,cat],Z). 应该回来 Z=[[c,a,t], [d,o,g], [s,h,e,e,p]]. 我知道我应该分别使用sort(L1,L2)和atom_chars(A,B)谓词。但我到底该如何编写代码呢?网上很少有Prolog教程,所以我真的不知道怎么说。。。 提前谢谢 灵感来自false的oneliner,由单元测试框架包装: :-begin_tests(spl

我请求学习Prolog,我想知道如何实现一个函数,将字符串列表转换为字符列表的有序列表。 例如:

?- f([sheep,dog,cat],Z).
应该回来

Z=[[c,a,t], [d,o,g], [s,h,e,e,p]].

我知道我应该分别使用sort(L1,L2)和atom_chars(A,B)谓词。但我到底该如何编写代码呢?网上很少有Prolog教程,所以我真的不知道怎么说。。。
提前谢谢

灵感来自false的oneliner,由单元测试框架包装:

:-begin_tests(split).

data([sheep,dog,cat]).

test(one) :- data(L),
             sort(L,L2),
             maplist(atom_chars,L2,Exploded),
             format("~q\n",[Exploded]),
             L2 = [[c,a,t], [d,o,g], [s,h,e,e,p]]. 


:-end_tests(split).

rt :- run_tests(split).

f(L,Z):-L=[羊,狗,猫],地图列表(atom_chars,L,Chs),排序(Chs,Z)。“网上很少有Prolog教程”。。。什么
?- rt.
% PL-Unit: split [[s,h,e,e,p],[d,o,g],[c,a,t]]
. done
% test passed
true.