我正在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进行编译。 感谢
答案 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