作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
What is an idiomatic way to add lists in Haskell?
(3 个回答)
8年前关闭。
例如,如何将 [1,2,3] 添加到 [5,4,6] 以返回 [6,6,8]
这是我到目前为止所拥有的:
func1 :: [Int]->[Int]->[Int]
func1 x y = [a+b|a<-x,b<-y]
最佳答案
您正在寻找 zipWith
.特别是 func1 x y = zipWith (+) x y
.你也可以“eta reduce”来删除那些额外的参数:func1 = zipWith (+)
.这是我能想到的最有效的形式。
您当前的方法不起作用,因为 [a+b | a <- x, b <- y]
形成两个嵌套循环,一个在 x
上es 和一个里面的 y
s。这是列表推导的本质,它基于 Set Builder Notation .一种读法是“对于 x 中的每个 a,y 中的每个 b,给我 (a + b)
”,而我们实际上想要运行 x
。和 y
一起。
关于haskell - 如何在haskell中添加两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19405778/
我是一名优秀的程序员,十分优秀!