我正在学习Haskell,类型类似乎是一种强大的方式,可以创建类型安全的多态函数。但是很多Haskell预定义函数并未使用它们,具体来说:
大多数列表函数无法与其他数据结构一起使用(例如,
foldr
和length
仅适用于列表,无法用于数组)。像
Data.ByteString
这样的模块是不可用的,除非你使用import qualified
,因为它们包括与Prelude函数名称相同的函数。
如果标准库使用类型类,则这两个问题似乎都将消失(请让我知道是否完全正确)。 我有两个问题:
Prelude 是出于技术或设计原因才这样吗?还是只是出于历史原因?
看起来有一些库(例如
Data.Foldable
,如果我没有误解,Scrap Your Boilerplate),它们用通用的替代品替换了标准Prelude函数。 有计划将这些想法纳入Haskell的未来版本中吗?