Vous tentez d'utiliser Data.Binary.Get et ByteString et de ne pas comprendre ce qui se passe. Mon code est ci-dessous:Haskell ByteString/Data.Binary.Get question
getSegmentParams :: Get (Int, L.ByteString)
getSegmentParams = do
seglen <- liftM fromIntegral getWord16be
params <- getByteString (seglen - 2)
return (seglen, params)
Je reçois l'erreur suivante contre le troisième élément du tuple de retour, à savoir la charge utile:
Couldn't match expected type `L.ByteString'
against inferred type `bytestring-0.9.1.4:Data.ByteString.Internal.ByteString'
Quelqu'un s'il vous plaît me expliquer l'interaction entre Data.Binary.Get et ByteStrings et comment je peux faire ce que j'ai l'intention de faire. Merci.
Vous n'avez pas besoin de convertir en une ByteString paresseuse - il vous suffit de l'obtenir directement via 'getLazyByteString'. Les docs haddock sont super. –
Cela fonctionne aussi. =) –
Tout à fait vrai dans ce cas. Il est à noter que c'est une opération distinctement différente. L'utilisation de 'getByteString' quand elle n'est pas nécessaire va forcer le' seglen' entier des octets tandis que 'getLazyByteString' restera paresseux. Peut-être que ce n'est pas important lorsque la taille maximale est de 64 Ko, mais si c'était un 'getWord32be', alors vous voudriez probablement le comportement paresseux au lieu de forcer potentiellement une allocation de 32 Go. –