在Data.ByteString.Internal中,ByteString具有构造函数
PS !!(ForeignPtr Word8) !!Int !!Int
这些双重感叹词在这里意味着什么?我搜索并得到(!!)可用于索引列表(!!) :: [a] -> Int -> a
。
答案 0 :(得分:7)
这不是实际Haskell源的一部分,而是Haddock如何呈现未装箱数据类型的(未记录的)功能。见https://mail.haskell.org/pipermail/haskell-cafe/2009-January/054135.html:
2009/1/21 Stephan Friedrichs< ...>:
您好,
使用haddock-2.4.1和这个文件:
module Test where data Test = NonStrict Int | Strict !Int | UnpackedStrict {-# UNPACK #-} !Int
生成的文档如下所示:
data Test Constructors NonStrict Int Strict !Int UnpackedStrict !!Int
注意双重'!'在最后一个构造函数中。这不是预期的 行为,是吗?
这是GHC漂亮打印未装箱类型的方式,所以我想Haddock 应遵循同样的惯例。嗯,也许Haddock应该有一个 关于语言扩展的章节,其中包含一个 参考GHC文件。这样使用的语言是 记录最少。不知道在这种情况下是否有帮助,因为" !!" 可能没有在那里记录。
也许我们不应该显示unbox注释,因为它们是 一个实现细节,对吗?我们可以显示一个"!"代替, 表明论证是严格的。
大卫