为什么 maplist 仅适用于 list-of-lists 的第一个列表?
%% given K:V match return V2 specified by K2
kv2kv(K:V,ResK,HL,Res) :- writeln(HL), member(K:V, HL), member(ResK:Res, HL).
find(K:V, FSL, S) :- maplist(kv2kv(K:V,word),FSL, S).
例子 :
?- fs7(L).
L = [[word:we,pos:pron,dep:nsubj],[word:are,pos:aux,dep:root],[word:about,pos:adj,dep:acomp],[word:to,pos:part,dep:aux],[word:finish,pos:verb,dep:xcomp],[word:the,pos:det,dep:det],[word:game,pos:noun,dep:dobj]].
?- fs7(L),find(dep:root,L,R).
[word:we,pos:pron,dep:nsubj]
false.
作为一个快速问题,kv2kv 子句使用两个成员查询,我想它会检查列表两次是否有更好的解决方案。