的Haskell Wikibook提供一個正確實施foldl1
foldl1 :: (a -> a -> a) -> [a] -> a
foldl1 f (x:xs) = foldl f x xs
foldl1 _ [] = error "Prelude.foldl1: empty list"
是不工作。我試圖編譯這個版本是:
myFoldl1 :: (a -> a -> a) -> [a] -> a
mFoldl1 f (x:xs) = myFoldl1 f x xs
myFoldl1 _ [] = error "Prelude.foldl1: empty list
我起初以爲是失蹤的情況下,結束折,並且有一個與輸入
foldl1 _ [x] = x
foldl1 f (x:xs) = foldl (f x) xs
一個問題,但是這不會工作,無論是。我認爲類型問題更深入,但我對Haskell沒有足夠的把握來進一步思考。有人可以幫我嗎?
定義「不起作用」。你是否遇到編譯錯誤或運行時錯誤,或者它只是無法終止?您提供的代碼在我的GHC上工作得非常好。 –
與myFoldl1我得到一個編譯錯誤「類型錯誤 - 統一會給infinte類型」 – Tina
嗯......這很奇怪。這是完整的錯誤信息嗎?如果是這樣,你使用的是哪種編譯器? –