我試圖用foldl
實現max'
誤差非常簡單的實現列表中最大使用折
max' :: (Ord a) => [a] -> a
(可悲的是,LYAH似乎並不具備練習,所以我讓他們起來)。
所以,我可以寫一個lambda採取兩個整數並返回最大:
(\x y -> if x > y then x else y) 2 3
,我可以foldl
列表使用它:
foldl (\x y -> if x > y then x else y) 2 [2, 3, 4, 1]
所以我認爲我需要的是:
max' :: (Ord a) => [a] -> a
max' xs = foldl (\x y -> if x > y then x else y) (head xs) (tail xs)
但是,上述行失敗:
Use foldl1
Found:
foldl (\ x y -> if x > y then x else y) (head xs) (tail xs)
Why Not:
foldl1 (\ x y -> if x > y then x else y) xs
我想問:
什麼是在這種情況下,這個問題?
如何從這種類型的消息中找出未來的錯誤?
這不是一個錯誤,這是一個hlint建議說:「你的實現是完全罰款,同時可以提高通過等等「。 – zakyggaps
@zakyggaps啊,現在這很有道理。非常感謝! –