Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell Haddock模块字段的可移植性、稳定性和可维护性如何使用?_Haskell_Haddock - Fatal编程技术网

Haskell Haddock模块字段的可移植性、稳定性和可维护性如何使用?

Haskell Haddock模块字段的可移植性、稳定性和可维护性如何使用?,haskell,haddock,Haskell,Haddock,在许多Haddock生成的模块文档(例如)中,可以看到右上角的一个小方框,其中包含可移植性、稳定性和维护人员信息: 通过查看这些模块的源代码和实验,我确认这些信息是从模块描述中的以下行生成的: -- Maintainer : libraries@haskell.org -- Stability : stable -- Portability : portable 这其中有几点很奇怪: 字段似乎仅按此顺序工作-任何无序的字段都被简单地视为模块描述本身的一部分。尽管源文件中的顺序与

在许多Haddock生成的模块文档(例如)中,可以看到右上角的一个小方框,其中包含可移植性、稳定性和维护人员信息:

通过查看这些模块的源代码和实验,我确认这些信息是从模块描述中的以下行生成的:

-- 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文档来讨论这一点。去看看吧。