2010-12-07 28 views

回答

12

foldl1' s函數參數的類型必須是a -> a -> a,即2個輸入參數和返回值必須具有相同的類型。在您的表達式中,該函數預期會返回一個2元組Num b => (a, b),而不是純數Num b => b,因此「發生檢查「

您可以使用foldl並提供初始值,例如

foldl (\acc elm -> acc + snd elm) 0 [(1,2),(3,4)] 

或使用現有的功能

(sum . map snd) [(1,2),(3,4)] 
2

您提供foldl1函數必須返回那是你的數組中同一類型的值。

您的數組包含(Number, Number)類型的元組,但返回Number類型的元素。

如果你想在這種情況下返回一個號碼,你必須使用foldl而不是foldl1略writewrite這個(如上面KennyTM寫道:d)

相關問題