length计算a折叠结构中元素的出现次数t 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是一项有用的功能,可让我们处理此问题。