Предположим, у меня есть следующая функцияСохранить переменную и использовать его на рекурсии
printVariance :: [Float] -> IO()
printVariance [] = return()
printVariance (x:xs)
| x >= avg (x:xs) = print (x - avg (x:xs)) >> printVariance xs
| otherwise = printVariance xs
который получает список, чеки, элементы которых больше, чем средний и печатает их value - avg
.
Моя проблема в том, что значение avg
изменяется каждый шаг. Как я могу определить его только один раз и использовать его значение для рекурсии?
Возможно, вы захотите переписать это с помощью складок и карт вместо прямого рекурсирования. Это позволит вам привязать привязку 'where' или' let', где вы определяете свой 'avg' как нечто по строкам' (foldr (+) 0 xs)/length xs'. – Michail