私はHaskellにとって非常に新しく、リストの平均を求める基本関数を作ろうとしています。私はほとんどそれを解決した、除算の最後のビットを除いて。これは私がlistSumとLISTLENGTHは基本的にそれぞれのリストの合計と長さの演算子と同じ機能を持っているとlistMeanは、これら二つを取り、それらを分ける場合は、使用を開始するものであるHaskellでの2つの関数の除算
randInts = take 5 $ randoms (mkStdGen 11) :: [Int]
listSum :: (Num a) => [a] -> a
listSum [] = 0
listSum (x:xs) = x + listSum xs
listLength :: (Num a) => [a] -> a
listLength [] = 0
listLength (x:xs) = 1 + listLength xs
listMean :: (Num a) => [a] -> a
listMean [] = 0
listMean x = (listSum x)/(listLength x)
。私はこれを実行すると、しかし、私はは「文脈から 『/』の使用に起因する(A分数)を推論できませんでした:のNum」というエラーを取得
最初に、私はちょうど私が使用していたと思いました間違った型と切り替えられたlistMean :: listMean ::(araction a)=> [a] - > a。これにより私はコンパイルすることができましたが、randIntsを与えて実行しようとしたときに、「listMeanを使用しているために(Fractional Int)のインスタンスがありません」というエラーメッセージが表示されました。
私はここで何が欠けているのか分かりません。私はいくつかのアドバイスをお願いできますか?
分数を削除することを意味しますか?私はそれをして、私に "タイプが期待されていると言ったエラーが発生しましたが、 'a'はkind 'Constraint'を持っています –
それは" listMean 'の使用から生じる "(分数int)のインスタンスがありません" –