Haskell Haddock模块字段的可移植性、稳定性和可维护性如何使用?
在许多Haddock生成的模块文档(例如)中,可以看到右上角的一个小方框,其中包含可移植性、稳定性和维护人员信息: 通过查看这些模块的源代码和实验,我确认这些信息是从模块描述中的以下行生成的:Haskell Haddock模块字段的可移植性、稳定性和可维护性如何使用?,haskell,haddock,Haskell,Haddock,在许多Haddock生成的模块文档(例如)中,可以看到右上角的一个小方框,其中包含可移植性、稳定性和维护人员信息: 通过查看这些模块的源代码和实验,我确认这些信息是从模块描述中的以下行生成的: -- Maintainer : libraries@haskell.org -- Stability : stable -- Portability : portable 这其中有几点很奇怪: 字段似乎仅按此顺序工作-任何无序的字段都被简单地视为模块描述本身的一部分。尽管源文件中的顺序与
-- Maintainer : libraries@haskell.org
-- Stability : stable
-- Portability : portable
这其中有几点很奇怪:
- 字段似乎仅按此顺序工作-任何无序的字段都被简单地视为模块描述本身的一部分。尽管源文件中的顺序与生成的文档中的顺序相反,但仍然存在这种情况
- 我无法找到这些领域的任何官方文件。有一个名为
,其示例值与我在等效的Haddock字段中看到的值相匹配,但除此之外,我什么也找不到的稳定性
和可移植性
常用值的完整列表。有一个列表,但我想知道这个列表是从哪里来的稳定性
- 决定模块是否可移植的标准。特别是,我想要这些问题的答案的包是一个绑定到strfry的FFI,这是一个仅在glibc中可用的函数。这个包是不可移植的,因为它只在glibc系统上工作,还是可移植的,因为它不使用任何Haskell语言扩展?通常的用法似乎暗示着后者
- 为什么源文件中需要字段的特定顺序,以及为什么它与生成的文档中的顺序相反
- 哦,我以为那些字段来自阴谋集团的包裹描述。它们在黑线鳕的文档中似乎根本没有记录。我发现了这个,它并没有真正回答你的问题,但是:
所以,如果它是自由形式的,为什么不写“不可移植(取决于glibc)”呢?我甚至看过“便携式(取决于ghc)”,这很奇怪。我还想知道,在将Foo添加到Haskell 2010之后,由于非Haskell扩展Foo而无法移植的模块会发生什么情况
注意,你链接到的阴谋集团文件也说稳定性是自由形式的。当然,即使haddock或cabal定义了什么是可接受的值,维护人员仍然需要主观地选择一个
关于具体的顺序,您可能只需要询问haddock邮件列表,或者检查源代码并提交一个bug
附言:strfry对Haskell社区是一个无价的贡献,但你不认为它应该是纯粹的和可移植的吗?啊,是的,黑线鳕的一个更模糊和粗糙的特性 据我所知,这只是一次非法入侵。没有合理的理由说明字段的顺序很重要,但事实确实如此。格式的具体选择(即,作为模块注释中的特殊形式,而不是作为某种单独的块)也不是最好的。我的猜测是,有一天有人想快速添加这个功能,所以他们砍掉了一些最小但功能正常的东西,就这样离开了。(不用费心记录。)
就我个人而言,我根本不关心这些领域。这些信息可以从黑线鳕那里得到,所以我也不用麻烦在黑线鳕中复制。也许有朝一日阴谋集团会自动将此信息传递给Haddock…事实上,我目前正在使用“非便携(仅限glibc)”,但我想知道这是否被视为正确使用该字段的信息。虽然字段是自由格式的,但阴谋集团文档、Haskell Wiki页面、,我所看到的价值观似乎都来自于一小部分价值观(包括我不希望有人独立思考的价值观,例如“临时的”),这让我认为,在实践中使用的价值观来自于一小部分,即使这些价值观没有“正式”写在任何地方;至少知道布景的起源会很好。关于订购事宜,我可能会尽快查收货源或询问邮件列表。考虑到对全局RNG状态的依赖性,使strfry变得纯粹是相当困难的:)仅供参考,我现在更新了Haddock文档来讨论这一点。去看看吧。