为什么长度返回Int而不是Num

时间:2015-05-13 16:14:42

标签: haskell

是否有任何理由将length功能限制为Int而不是Num

prelude中的很多函数都限制为Int类型而不是更通用的类型/类型类:

:t length
length :: [a] -> Int

:t take
take :: Int -> [a] -> [a]

:t drop
drop :: Int -> [a] -> [a]

但Data.List

中还有更多通用函数
:t genericLength
genericLength :: Num i => [a] -> i

:t genericTake
genericTake :: Integral i => i -> [a] -> [a]

:t genericDrop
genericDrop :: Integral i => i -> [a] -> [a]

为什么第一个具有Int限制并且没有被定义为通用的第二个? 这Int限制是否有任何理由?

0 个答案:

没有答案