にそれを使用するには、私は次の関数保存変数と再帰
リストを取得します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
の値が変わるということです。どのようにして一度だけ定義し、その値を再帰に使うことができますか?
これは、直接再帰的にではなく折り畳みとマップを使用して書き直したい場合があります。これは '(foldr(+)0 xs)/ length xs'の行に沿って' avg'を何かと定義する 'where'または' let'バインディングを付けることを可能にします。 – Michail