【发布时间】:2018-02-28 00:24:19
【问题描述】:
GHC 特有的库可以称为标准库吗?还是只计算 Haskell 2010 报告中的那些?
许多 GHC 库可以通过 Haskell 报告中的函数实现,可能与 C 绑定结合使用。但是其他的依赖于 GHC 特定的扩展,因为语言报告中定义的当前 Haskell 语言不支持它。
比如Data.Array.IO可以用纯标准的Haskell实现吗?
认为 GHC 是 Haskell 真的可以吗?
【问题讨论】:
-
特别是关于
Data.Array.IO,答案是明确的“否”。 The array docs 说“除了提供 Haskell 2010 语言报告中指定的 Data.Array 模块,这个包还定义了不可变数组的类 IArray 和 MArray在适当的单子中可变的数组,以及这些类的一些实例”(强调我的);同时,Data.Array.IO被标记为“不可移植(使用 Data.Array.MArray)”。 -
据我所知,GHC 是目前唯一的通用 Haskell 实现。也就是说,您可能想检查一下
GHCJS和Haste提供了哪些库,并且可能需要扩展一些 Haskell 亲戚,例如 Purescript 和 Frege。 -
不幸的是,Haskell 社区对于什么是“标准”库并没有真正的共识。报告库对于许多用途来说太有限了,GHC 库主要由 GHC 本身需要 定义,Haskell 平台试图定义一个但许多人不喜欢依赖它,并且Stackage 尤其是 Hackage 太大了。
-
@ØrjanJohansen 也许你应该发表你的评论作为答案。