计算可折叠结构的元素

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 是一个有用的功能,可以让我们处理这个问题。