具有参数化谓词的映射表
maplist with parametrized 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.
是的,谓词只是获取所有附加参数。在定义 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].
是否可以在 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.
是的,谓词只是获取所有附加参数。在定义 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].