brz*_*ski 1 haskell list-comprehension
我想制作从对列表中返回每对中的乘法元素列表的函数.例如:
>product [1,2] [3,4]
[3,8]
Run Code Online (Sandbox Code Playgroud)
我想用这个来做list comprehension.我试过这样的事情:
product :: Num a => [a] -> [a] -> [a]
product xs ys = [x*y | z<-zip xs ys, (x, _)<-z, (_, y)<-z]
Run Code Online (Sandbox Code Playgroud)
但它不起作用.应该改变什么?
根据经验,<-每个嵌套迭代都应该有一个.因为你只想迭代一个列表 - 即,zip xs ys- 应该只有一个<-.从而:
scalarproduct xs ys = sum [x*y | (x,y) <- zip xs ys]
Run Code Online (Sandbox Code Playgroud)
您可能也喜欢这个zipWith功能:
scalarproduct xs ys = sum (zipWith (*) xs ys)
scalarproduct = (sum .) . zipWith (*) -- may be readable, depending on your bent
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |