haskell中输入'sum'的解析错误

时间:2013-08-07 19:20:49

标签: haskell ghci

我正在haskell写一个简短的程序来查找1到2000之间奇数列表的平均值,这些奇数不能被3或5整除。我无法编译并继续得到各种错误。我做了一些更改,现在代码在第5行第9行给了我一个“输入'解析错误'”。有人可以告诉我,我做错了吗?

--Write a Haskell function that calculates the mean of a list of odd numbers that
--are not divisible by 3 or 5 and whose sum is less than 2000.
mean :: Int
mean = let nums = [x|x <- [1,3..1999], x 'mod' 3 != 0, x 'mod' 5 != 0]
    sum nums/length nums

我正在与GHCI进行编译。 感谢

2 个答案:

答案 0 :(得分:4)

除了DiegoNolan提到的遗失in之外,您的定义还存在其他一些小问题。首先,要使用一个两元函数中缀,你必须将它包含在反引号中,同时使用“滴答”。此外,Haskell使用/=来表示不等式而不是!=。最后,您不能使用/进行整数除法,而是使用函数div

mean = let nums = [x|x <- [1,3..1999], x `mod` 3 /= 0, x `mod` 5 /= 0]
       in
       sum nums `div` length nums

答案 1 :(得分:2)

您需要in

mean :: Int
mean = let nums = [x|x <- [1,3..1999], x 'mod' 3 != 0, x 'mod' 5 != 0]
       in sum nums/length nums