我對Haskell很新,我正在嘗試做一個基本的函數,它可以找到列表的意思。我幾乎已經解決了,除了我必須做的最後一部分。Haskell中的兩個函數的劃分
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)
這是我開始,其中listSum和listLength基本上具有相同的功能之和長度上的運營商名單分別listMean需要這兩個和將其劃分。當我運行這一點,但是,我得到一個錯誤說「無法演繹(分數一)從使用‘/’從上下文的產生:民爲」
起初,我只是覺得我用了錯誤的類型和切換listmean以listMean ::(分數a)=> [a] - > a開頭。這允許我編譯,但是當我試圖通過給它randInts運行它時,但是我得到錯誤消息「沒有使用'listMean'引發的(Fractional Int)實例。」
我不知道我在這裏失蹤。請給我一些建議嗎?
您的意思是刪除小數?我做到了這一點,它給了我一個錯誤,說「預期的類型,但'一'有種'約束'」 –
這給了我錯誤「沒有實例(分數INT)由於使用'listMean'」 –