使用ListPair.foldr我需要创建一个组合两个列表的函数zipWith。 整体功能的类型应为:
zipWith : ('a * 'b -> 'c) -> 'a list -> 'b list -> 'c list
ListPair.foldr : ('a * 'b * 'c -> 'c) -> 'c -> 'a list * 'b list -> 'c
- zipWith (fn (x, y) => x + y) [1,2,3,4] [10,20,30,40];
val it = [11,22,33,44] : int list
我的尝试:
fun zipWith f [] [] = []
| ListPair.foldr f (x::xs) (y::ys) = f(x,(zipWith f ys d));
我想除了最后一种类型之外,我得到了所有东西。不知道它是不是一个不同类型所以我只是命名为d。