假设我们有两个列表
[1, 2, 3]
,
[3, 2, 1]
我们想要创建第三个列表,它等于一个二进制函数对每个对应的列表元素对的结果。
比如:
f(x, y) =
-1, if x < y;
0, if x = y;
1 if x > y.
作为我们的例子,我们得到
[-1, 0, 1]
.
我创建了代码:
f(A, B, C) :- ( A < B ->
C = -1
; A =:= B ->
C = 0
; C = 1
).
zip([A], [B], [C]) :- f(A, B, C).
zip([A | T1], [B | T2], [C | T]) :- f(A, B, C), zip(T1, T2, T).
它的工作原理是:
?- zip([1,2,3], [3,2,1], X).
X = [-1, 0, 1] .
但我有一种感觉,我正在重新发明轮子。Prolog中是否有用于此的系统函数?