F#zip实现

skb*_*skb 3 f# functional-programming f#-interactive

我无法弄清楚如何在F#中实现Zip功能.谁能告诉我我做错了什么?这是我输入的内容fsi.exe:

> let rec zip xs ys =
-  match xs with
-   | [] -> []
-   | head :: tail -> (match ys with
-                       | [] -> []
-                       | headY :: tailY -> (head, headY) :: zip tail tailY);;

val zip : xs:'a list -> ys:'b list -> ('a * 'b) list

> zip [1;2;3;4] ["a","b","c","d"];;
val it : (int * (string * string * string * string)) list =
  [(1, ("a", "b", "c", "d"))]
Run Code Online (Sandbox Code Playgroud)

ntr*_*ntr 8

在您的示例中["a","b","c","d"]是一个包含一个元素的列表,该元素是4维元组.这就是为什么你从zip获得意想不到的结果.只需使用;元素分隔符.