【发布时间】:2015-12-03 15:01:56
【问题描述】:
我使用 foldr 编写了一个函数,用于确定列表或字符串的长度。我对为什么 Haskell 将类型类确定为 Num 有点困惑。当然字符串不包含在这个类中?然而,Haskell 坚持必须如此,否则该功能将无法正常工作。有人可以帮助澄清这是为什么吗?
myLength' :: (Num a) => [a] -> Int
myLength' xs = foldr (\x acc -> 1 + acc) 0 xs
【问题讨论】:
-
您使用的是哪个版本? GHC 7.10 将您的函数类型推断为
(Num b, Foldable t) => t a -> b。 -
GHC 7.8.4 如果有帮助的话
标签: list haskell types typeclass