prolog中setof的源代码是什么?
问问题
2635 次
2 回答
7
?- listing(setof).
:- meta_predicate setof(?,0,-).
setof(A, B, F) :-
free_variable_set(A, B, D, C),
( C==v
-> findall(A, D, E),
E\==[],
sort(E, F)
; findall(C-A, D, E),
( ground(E)
-> sort(E, G),
pick(G, C, F)
; bind_bagof_keys(E, _),
sort(E, G),
pick(G, C, H),
sort(H, F)
)
).
true.
于 2011-04-16T09:12:21.273 回答
0
如果您正在寻找 Sicstus 内置谓词实现,可以在此处找到:http ://www.sics.se/sicstus/docs/4.2.1/html/sicstus/mpg_002dref_002dsetof.html为:
setof(+Template, +Generator, -Set)
与 findall/3 和 bagof/3 不同,setof 不返回重复项并给出排序顺序。
我。
于 2012-06-19T16:49:59.053 回答