SML高阶函数类型?

时间:2013-01-31 19:55:34

标签: list functional-programming reverse sml higher-order-functions

我正在尝试实现一个功能

 ziprev : 'a list -> 'b list -> ('a * 'b)list
 - ziprev [1,2,3,4] [10,20,30,40];
 val it = [(1,40),(2,30),(3,20),(4,10)] : (int * int) list

使用zipWith和库中的List.rev。

我在功能方面遇到了麻烦。尝试:

fun ziprev xs ys = List.zipWith(List.rev(fn(a,b) => (a,b)::[]),xs,ys);

运算符:'Z列表操作数:'Y *'X - > ('Y *'X)列表

1 个答案:

答案 0 :(得分:1)

SML基础库中没有List.zipWith,所以我不知道你从哪里来的那个;并且List.rev不接受函数作为参数,它将列表作为参数

- rev;
val it = fn : 'a list -> 'a list

我想你要完成的是ListPair.zip而不是

- fun ziprev xs ys = ListPair.zip(xs, rev ys);
val ziprev = fn : 'a list -> 'b list -> ('a * 'b) list

- ziprev [1,2,3,4] [10,20,30,40];
val it = [(1,40),(2,30),(3,20),(4,10)] : (int * int) list