IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

Data.BinaryのputとputByteString

ByteStringBinaryクラスのインスタンスになっているので、putputByteStringは同じものかと思ったのですが、差がありました。

Data.Binary

 > runPut $ put $ BSL.pack [0xFF,0xFE,0xFD]
"\NUL\NUL\NUL\NUL\NUL\NUL\NUL\ETX\255\254\253"
 > runPut $ putLazyByteString $ BSL.pack [0xFF,0xFE,0xFD]
"\255\254\253"
 ```

実装を見ると```ByteString```の```Binary```のインスタンスは、バイト列だけでなく、その長さの情報もデコードしています。