は、延ByteStringはコンストラクタ二重の感嘆符の使い方は何ですか? Data.ByteString.Internalで
PS !!(ForeignPtr Word8) !!Int !!Int
これらの二重叫び声がここで何を意味していますか?私は検索して、ちょうどそれを得ました(!!)は、リスト(!!) :: [a] -> Int -> a
をインデックスするために使用することができます。
は、延ByteStringはコンストラクタ二重の感嘆符の使い方は何ですか? Data.ByteString.Internalで
PS !!(ForeignPtr Word8) !!Int !!Int
これらの二重叫び声がここで何を意味していますか?私は検索して、ちょうどそれを得ました(!!)は、リスト(!!) :: [a] -> Int -> a
をインデックスするために使用することができます。
これは実際のHaskellソースではなく、Haddockがボックス化されていないデータ型をレンダリングする方法の(文書化されていない)機能です。
2009年1月21日ステファン・フリードリッヒ< ...>:https://mail.haskell.org/pipermail/haskell-cafe/2009-January/054135.htmlを参照してくださいハドック-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注釈を表示しないでください。私たちは1つの "!"代わりに、引数がstrictであることを示す を示します。
デビッド
それは通常(*遅延評価とは対照的に*)*厳しい*評価のために使用されるので、関数が呼び出される前に、オペランドが評価されます。 –
@WillemVanOnsem、私は1つの感嘆符(!)がオペランドを厳密にすることができるのを覚えていますが、二重の感嘆符も同じですか? – hliu
http://hackage.haskell.org/package/bytestring-0.10.8.1/docs/src/Data-ByteString-Internal.html#ByteString - コードはどこに表示されましたか? – melpomene