Я думаю, что мой код, чтобы найти среднее из списка (целых чисел), работает нормально, но имеет проблему. Это мой кодНайти список из списка в Haskell
listlen xs = if null xs
then 0
else 1 + (listlen (tail xs))
sumx xs = if null xs
then 0
else (head xs) + sumx (tail xs)
mean xs = if null xs
then 0
else (fromIntegral (sumx xs))/(fromIntegral (listlen xs))
моя средняя функция должна пройти через список дважды. Однажды, чтобы получить сумму элементов, и один раз, чтобы получить количество элементов. Очевидно, это не здорово.
Я хотел бы знать более эффективный способ сделать это (используя элементарную Haskell - это аа вопрос от Real World Haskell главы 3.)
Вы можете использовать аккумулятор для хранения длины. – simonzack
Не могли бы вы уточнить? –