小编Jon*_*anz的帖子

zip功能中的Haskell冒号

我很难理解这个Haskell函数.我知道它表面上做了什么,但我不确定它是如何实现这一功能的.

zip (x:xs) (y:ys) = (x,y) : zip xs ys 
zip xs ys = [ ]
Run Code Online (Sandbox Code Playgroud)

我的想法:

  1. zip 是函数的名称.
  2. zip需要2个参数.(我相信currying在这里并不重要).
  3. 参数是(x:xs)(y:ys)
  4. zip返回元组类型的列表(x,y).

现在我不太了解参数

(x:xs) (y:ys)
Run Code Online (Sandbox Code Playgroud)

冒号将一些内容添加到列表的开头(返回列表),那么我们为什么要将某些内容添加到我们想要压缩的列表中呢?什么是xy功能定义?

右侧看起来很明显:我们将元组(x,y)插入(0)到zip返回的元组列表中.

(x,y) : zip xs ys 
Run Code Online (Sandbox Code Playgroud)

现在,zip xs ys = [ ]如果我们只传递2个列表,为什么我们总是想要一个空列表呢?

你能解释下面的调用是如何zip进行评估的:

zip [5,7,9] [1,3,5,11]
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
2
解决办法
401
查看次数

标签 统计

haskell ×1