計算可摺疊結構的元素
length
計算可摺疊結構 t a
中元素 a
的出現次數。
ghci> length [7, 2, 9] -- t ~ []
3
ghci> length (Right 'a') -- t ~ Either e
1 -- 'Either e a' may contain zero or one 'a'
ghci> length (Left "foo") -- t ~ Either String
0
ghci> length (3, True) -- t ~ (,) Int
1 -- '(c, a)' always contains exactly one 'a'
length
被定義為等同於:
class Foldable t where
-- ...
length::t a -> Int
length = foldl' (\c _ -> c+1) 0
請注意,此返回型別 Int
限制可以對通過呼叫 length
函式獲得的值執行的操作。fromIntegral
是一個有用的功能,可以讓我們處理這個問題。