Data.Binary.Get 및 ByteString를 사용하려고하고 무슨 일이 일어나고 있는지 이해하지. 내 코드는 다음과 같습니다 :하스켈 ByteString/Data.Binary.Get 질문
getSegmentParams :: Get (Int, L.ByteString)
getSegmentParams = do
seglen <- liftM fromIntegral getWord16be
params <- getByteString (seglen - 2)
return (seglen, params)
내가 반환 튜플의 세 번째 항목, 즉 페이로드에 대한 다음과 같은 오류 얻을 :
이Couldn't match expected type `L.ByteString'
against inferred type `bytestring-0.9.1.4:Data.ByteString.Internal.ByteString'
누군가가 나에게 Data.Binary.Get 사이의 상호 작용을 설명하시기 바랍니다 ByteStrings 및 내가 의도 한 바를 어떻게 수행 할 수 있는지. 감사.
당신은 게으른 ByteString로 변환 할 필요가 없습니다. haddock 문서는 훌륭합니다. –
그게 너무 작동합니다. =)이 경우 –
사실이. 이것은 분명히 다른 작업 임에 유의할 가치가 있습니다. 이 바이트의 전체'seglen'을 강제로 필요하지 않을 때'getByteString'를 사용하면'동안 getLazyByteString' 게으른 유지됩니다. 최대 크기는 64KB의,하지만 그했다 경우는'getWord32be'은 다음 잠재적으로 32 기가 바이트 할당을 강제하는 대신 게으른 행동을 할 가능성이 줄 때 아마도 이것은 중요하지 않습니다. –