我目前正在阅读http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Set
以下细节传达了什么(对于绝对的haskell初学者)?
可移植性:可移植性(还有哪些是可移植性价值?)
稳定性:临时性(还有哪些是稳定性价值?)
维护者:libraries@haskell.org
安全 Haskell:安全(有什么不安全的吗?)
我目前正在阅读http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Set
以下细节传达了什么(对于绝对的haskell初学者)?
可移植性:可移植性(还有哪些是可移植性价值?)
稳定性:临时性(还有哪些是稳定性价值?)
维护者:libraries@haskell.org
安全 Haskell:安全(有什么不安全的吗?)
这些字段来自包的.cabal
文件,其中列出了包的一些元数据。许多字段可以具有自由格式的值,以便开发人员自己决定在该字段中写入什么,并且对于每个字段不得包含的内容没有固定的“规则”。
可移植性:描述包在 Haskell 编译器之间的可移植性,有时也在操作系统之间。我见过的唯一值是“便携”和“不可移植”。不可移植包是可能依赖于仅存在于GHC编译器中的 Haskell 语言扩展的包,并且不适用于任何其他 Haskell 编译器(如UHC),或者可能依赖于某些仅存在于 UNIX 中且不存在的系统库不能在 Windows 中工作。
稳定:指定库的稳定性,包括其可靠性(例如崩溃的频率),但最重要的是其 API 更改的频率。我已经看到了“实验”、“临时”和“稳定”的值,但在某个地方可能会有更多的列表(Cabal 文档中的内容有时无法找到)。当一个包是实验性的,这意味着它的接口可能会在每个版本之间发生变化,因为开发人员还没有决定应该如何实现它,或者因为开发人员只是从某处的论文中实现了一些理论功能,并且没有打算维护包;他/她只是想实现该功能以查看是否可行,并且正在发布包作为演示。当包裹是临时的,这意味着通用 API 是稳定的,因此可能会对包进行更新,仅修复内部错误,而不会添加或删除任何功能。但是,因为它是临时的,所以当开发人员决定添加新功能或重组库时,它可能会在未来发生变化。使用稳定的库,这基本上不会发生;API可能永远不会改变,并且实现是“坚如磐石”或API的参考实现或其他东西。
包的维护者是负责包的人或一组人。该电子邮件指定了如何联系这些维护人员。
“ Safe Haskell ”字段是指 GHC 扩展,您可以在此处阅读更多信息。不安全的模块使用的函数unsafePerformIO
破坏了 Haskell 的一些基本“规则”,如引用透明性。不安全的模块也可能使用不安全的语言扩展。安全模块是不使用任何不安全功能等的模块,也不导入任何其他不安全模块。受信任的模块使用不安全的功能(直接受信任,间接受信任),但作者已确保模块的公共 API 安全地隐藏了这一事实,因此从外部看来,该模块对于所有意图和目的都是安全的。这些是“Safe Haskell”字段的选项。