我需要实现一个可以
的谓词size_sub([[a,a,a],[b,b]],X).
and returns
[a,3],[b,2]
到目前为止我所取得的成就
size_sub(A,Ls):-
maplist(length,A,Ls).
returns
[3,2]
如何修改现有功能以返回值编号对。
答案 0 :(得分:3)
你可以传递给maplist一个谓词做适当的事情,比如
size_sub(A,Ls):-
maplist(list_sym_len,A,Ls).
list_sym_len([Sym|Rest], [Sym, Len]) :- length([Sym|Rest], Len).
或使用库lambda。在SWI-Prolog中,您可以使用
获取它?- pack_install(lambda).
安装后,您有时可以简写您的定义
:- use_module(library(lambda)).
?- maplist(\[Sym|Rest]^[Sym,Len]^length([Sym|Rest], Len), [[a,a,a],[b,c]],R).
R = [[a, 3], [b, 2]].