Это моя функция вычисления среднего числа в списке чисел
arithMean :: (Fractional a) => [a] -> a
arithMean list = (foldr (+) 0 list)/ (length list)
Однако, возникла ошибка ниже
HigherOrder.hs:10:39: error:
? Couldn't match expected type ‘a’ with actual type ‘Int’
‘a’ is a rigid type variable bound by
the type signature for:
arithMean :: forall a. Fractional a => [a] -> a
at HigherOrder.hs:9:1-39
? In the second argument of ‘(/)’, namely ‘(length list)’
In the expression: (foldr (+) 0 list) / (length list)
In an equation for ‘arithMean’:
arithMean list = (foldr (+) 0 list) / (length list)
? Relevant bindings include
list :: [a] (bound at HigherOrder.hs:10:11)
arithMean :: [a] -> a (bound at HigherOrder.hs:10:1)
Об этой ошибке я очень запуталсяпочему это заставляет меня изменить «список» на [Int], я думаю, независимо от того, какие это типы, он должен работать
кроме того, я думаю, что, возможно, что-то случилось, когда я пытаюсь использовать «длину»функция, потому что, когда я написал этот код ниже, он работает
arithMean :: (Fractional a) => [a] -> a
arithMean list = (foldr (+) 0 list)