我很难理解 zipwith 在 Prolog 中的这种应用,并想知道是否有人得到它。我已经知道仿函数的作用,但我不知道它在这种情况下如何应用。我隐约认为将arg
CL 的 arg no 1 和 arg no 2 放在A
andB
中,但之后就不再使用它们了。这是谓词:
zipWith( _, [], [], [] ).
zipWith( OP, [A | AS], [B | BS], [CL | RS] ) :-
functor( CL, OP, 2 ),
arg( 1, CL, A ),
arg( 2, CL, B ),
zipWith( OP, AS, BS, RS ).
这是使用此谓词的示例:
| ?- zipWith( F, L1, L2, [b(w, w), b(f, g)] ).
F = b,
L1 = [w,f],
L2 = [w,g] ?yes