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