在Haskell中乘以列表的内容

时间:2017-10-17 02:25:34

标签: list haskell

我是Haskell的初学者,我正在尝试实现一个函数,该函数返回列表的内容相乘。这是我的代码:

product' :: Num a => [a] -> a
product' [] = 1
product' (_:xs) = foldl (*) 1 xs

在命令行中,我输入产品:

product' [2,3,4]

我得到12而不是24。我知道这与列表的第一个元素没有被读取有关,但我无法弄明白。任何帮助或指导都将非常感激。

1 个答案:

答案 0 :(得分:2)

只需写下

product' :: Num a => [a] -> a
product' = foldl (*) 1

product' :: Num a => [a] -> a
product' [] = 1
product' (x:xs) = foldl (*) x xs

如果你想保留参数。