SML类型的功能(currying)?

时间:2013-01-25 19:05:16

标签: list sml higher-order-functions currying

使用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。

0 个答案:

没有答案