带有参数化谓词的maplist

时间:2016-05-26 16:45:42

标签: list prolog meta-predicate

是否可以在mapList中使用参数化谓词?

例如,我想做以下事情: 按列表排序,并且对于每个偶数元素(列表仅包含数字)将此元素映射到某个值(此值由谓词参数设置)。

示例查询:

?- mapList(p(red, blue), [1,2,3,4], [red, blue, red, blue]).
true.

?- mapList(p(green, blue), [1,2,3,4], [green, blue, green, blue]).
true.

1 个答案:

答案 0 :(得分:2)

是的,谓词只是获取所有其他参数。定义p / 4后,运行查询(一旦mapList已更正为maplist):

?- [user].
p(C1,C2,N,C) :- 0 =:= N mod 2 -> C = C2 ; C = C1.
(^D here)

?- maplist(p(red, blue), [1,2,3,4], L).
L = [red, blue, red, blue].
相关问题