hackage.haskell.org文档约定含义

Opt*_*ght 18 haskell haskell-platform

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

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

便携性:便携式(其他哪些是便携性值?)
稳定性:临时性(其他哪些是稳定性值?)
维护者:libraries@haskell.org
安全Haskell:安全(有什么东西不安全吗?)

dfl*_*str 18

这些字段来自包的.cabal文件,该文件列出了包的一些元数据.许多字段可以具有自由格式值,因此开发人员可以决定在该字段中写入什么,并且没有固定的"规则"来确定每个字段不能包含的内容.

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

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

包裹的维护者是负责包裹的人或群体.该电子邮件指定了如何联系这些维护者.

" 安全Haskell "字段是指GHC扩展,您可以在此处详细了解.一个不安全的模块使用的功能unsafePerformIO可以打破Haskell的一些基本"规则",例如参照透明度.一个不安全的模块也可能使用不安全的语言扩展.一个安全模块是不使用任何不安全的功能等,也不会导入任何其他不安全的模块的模块.一个值得信赖的模块使用不安全的功能(直接守信,间接信任),但笔者确信,该模块的公共API安全地隐藏这个事实,所以从外面看,它好像模块是所有意图和目的安全.这些是"安全Haskell"字段的选项.