gpt4 book ai didi

haskell - 如何将对列表中每对的两个元素相乘 - Haskell

转载 作者:行者123 更新时间:2023-12-02 10:26:42 24 4
gpt4 key购买 nike

我想创建一个函数,该函数返回对列表中每对的相乘元素列表。例如:

>product [1,2] [3,4]
[3,8]

我想使用列表理解来做到这一点。我尝试过这样的事情:

product :: Num a => [a] -> [a] -> [a]
product xs ys = [x*y | z<-zip xs ys, (x, _)<-z, (_, y)<-z]

但它不起作用。应该改变什么?

最佳答案

根据经验,您应该有一个 <-对于每个嵌套迭代。因为您只想迭代一个列表 - 即 zip xs ys -- 应该只有一个 <- 。因此:

scalarproduct xs ys = sum [x*y | (x,y) <- zip xs ys]

您可能还喜欢 zipWith 功能:

scalarproduct xs ys = sum (zipWith (*) xs ys)
scalarproduct = (sum .) . zipWith (*) -- may be readable, depending on your bent

关于haskell - 如何将对列表中每对的两个元素相乘 - Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com