haskell - hackage.haskell.org 文档约定的含义

标签 haskell haskell-platform

我目前正在阅读http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Set

以下细节传达了什么(对于绝对的haskell初学者)?

便携性:便携(还有哪些便携值(value)?)
稳定性:暂定(还有哪些是稳定性值?)
维护者:libraries@haskell.org
Safe Haskell:安全(有什么不安全的吗?)

最佳答案

这些字段来自包的.cabal文件,其中列出了包的一些元数据。许多字段可以具有自由格式的值,以便开发人员自己决定在该字段中写入什么,并且对于每个字段不得包含的内容没有固定的“规则”。

便携性:描述包在 Haskell 编译器之间的可移植性,有时也在操作系统之间。我见过的唯一值是“便携”和“不可移植”。不可移植包是可能依赖于仅存在于 GHC 中的 Haskell 语言扩展的包。编译器,并且不适用于任何其他 Haskell 编译器,例如 UHC ,或者这可能取决于某些仅存在于 UNIX 中而在 Windows 中不起作用的系统库。

稳定性:指定库的稳定性,包括其可靠性(例如崩溃的频率),但最重要的是其 API 更改的频率。我已经看到了“实验”、“临时”和“稳定”的值,但在某个地方可能会有更多的列表(Cabal 文档中的内容有时无法找到)。当一个包是实验性的,这意味着它的接口(interface)可能会在每个版本之间发生变化,因为开发人员还没有决定应该如何实现它,或者因为开发人员只是从某处的论文中实现了一些理论功能,并且没有打算维护包;他/她只是想实现该功能以查看是否可行,并且正在发布包作为演示。当一个包是临时的时,这意味着通用 API 是稳定的,因此可能会对包进行更新,只修复内部错误,而不添加或删除任何功能。但是,因为它是临时的,所以当开发人员决定添加新功能或重组库时,它可能会在 future 发生变化。使用稳定的库,这基本上不会发生; API可能永远不会改变,并且实现是“坚如磐石”或API的引用实现或其他东西。

维护者 对于包来说,是负责包的人或人组。该电子邮件指定了如何联系这些维护人员。

Safe Haskell ”字段是指 GHC 扩展,您可以阅读有关 here 的更多信息。 .不安全的模块使用 unsafePerformIO 之类的函数这打破了 Haskell 的一些基本“规则”,例如引用透明性。不安全的模块也可能使用不安全的语言扩展。安全模块是不使用任何不安全功能等的模块,也不导入任何其他不安全模块。受信任的模块使用不安全的函数(直接信任,间接信任),但作者确保模块的公共(public) API 安全地隐藏了这一事实,因此从外部看来,该模块对于所有意图和目的都是安全的。这些是“Safe Haskell”字段的选项。

关于haskell - hackage.haskell.org 文档约定的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526701/

相关文章:

haskell - 独立的 Haskell Executable 可以在具有相同操作系统的机器上运行吗?

haskell - 当 Emacs 23 Haskell 编译 (C-c C-l) 进入无休止的过程时该怎么办?

Haskell 无法将预期类型 [char] 与实际类型 IO 匹配

haskell - 泛化类参数

Haskell 字符串分词器函数

haskell - Haskell 中的奇怪返回

haskell - 离线安装和运行 haskell 包

python - Zope 测试浏览器的 Haskell 等价物

haskell - 如何使括号免受异步异常的影响?

haskell - 默认情况下具有不可变变量的语言,例如 Haskell