-2

我想要實現的功能SML高階函數類型?

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

你有沒有使用'zipWith'工作來獲得你的'zip'實現?從那裏開始的下一步應該很容易。 – molbdnilo

回答

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 
+0

fun zipWith f(x :: xs)(y :: ys)=(f x y)::(zipWith f xs ys) | zipWith _ _ _ = [];不管怎麼說,多謝拉 – user2012107