我是Haskell的初学者,我正在尝试实现一个函数,该函数返回列表的内容相乘。这是我的代码:
product' :: Num a => [a] -> a
product' [] = 1
product' (_:xs) = foldl (*) 1 xs
在命令行中,我输入产品:
product' [2,3,4]
我得到12而不是24。我知道这与列表的第一个元素没有被读取有关,但我无法弄明白。任何帮助或指导都将非常感激。
答案 0 :(得分:2)
只需写下
product' :: Num a => [a] -> a
product' = foldl (*) 1
或
product' :: Num a => [a] -> a
product' [] = 1
product' (x:xs) = foldl (*) x xs
如果你想保留参数。