Haskell标准库中的GHC.Exts模块声称它
是获得GHC特定扩展的批准方式。
如果这是真的,它解释了包含特定于实现的常量,如the constant representing the maximum size of a tuple和(可能)非可移植debugging functions。
然而,它并没有解释为什么sortWith
在这个模块中。 Its implementation看起来像普通的便携式Haskell给我。
我希望能够看到它,例如Data.List和Data.Sequence。
似乎我误解了GHC.Exts是什么,我不理解其出口集合背后的基本逻辑,或者出现一些大杂烩的历史原因。
那么,什么是GHC.Exts for ?并且为什么会导出这种奇怪的混合物??
答案 0 :(得分:7)
这些函数和Down
newtype用于语法扩展:Generalised (SQL-Like) List Comprehensions,使用-XTransformListComp
启用。
此扩展程序引入了与这些功能相对应的关键字:
有三个新关键字:
group
,by
和using
。 (功能sortWith
不是关键字;它是一个导出的普通函数 通过GHC.Exts
。)
这些功能正在列表中,但它们确实属于某个扩展程序(GHC.Exts
是扩展程序' home。)
GHC.Exts
导出各种各样的东西的原因是因为有各种各样的扩展。
如果您想看到更多信息,请参阅user guide page - 以及更多信息,由Phil Wadler和Simon Peyton Jones提供paper。它实际上非常令人兴奋,这是用户指南页面中的一个例子:
我将其截断,但你可以说:
[ .. | (name, dept, salary) <- employees
, then group by dept
, then sortWith by (sum salary)
, then take 5 ]
另一个例子是:
output = [x| y <- [1..5], x <- "hello"
, then group using inits]
收率:
["","h","he","hel","hell","hello","helloh","hellohe","hellohel","hellohell","hellohello","hellohelloh",...]