Многие типы String (ByteString)
Я хочу сжать свою заявкуСетевой трафик.
По словам (последний?)Рейтинг популярности Haskell ",Zlib кажется довольно популярным решением. Zlib»интерфейс используетByteString
s:
compress :: ByteString -> ByteString
decompress :: ByteString -> ByteString
Я использую обычныеString
s, которые также являются типами данных, используемымиread
show
, а также :Network.Socket
sendTo :: Socket -> String -> SockAddr -> IO Int
recvFrom :: Socket -> Int -> IO (String, Int, SockAddr)
Таким образом, чтобы сжать мои строки, мне нужен какой-то способ преобразоватьString
кByteString
и наоборот. Сhoogle»с помощью я нашел:
Data.ByteString.Char8 pack :: String -> ByteString
Попытка использовать это:
Prelude Codec.Compression.Zlib Data.ByteString.Char8> compress (pack "boo")
:1:10:
Couldn't match expected type `Data.ByteString.Lazy.Internal.ByteString'
against inferred type `ByteString'
In the first argument of `compress', namely `(pack "boo")'
In the expression: compress (pack "boo")
In the definition of `it': it = compress (pack "boo")
Не удается, потому что (?) Существуют разные типы?ByteString
Итак, в основном:
Есть ли несколько типовByteString
? Какие типы и почему?Что» способ конвертироватьString
сByteString
s?Кстати, я обнаружил, что это работает сData.ByteString.Lazy.Char8
ByteString
, но я'Я все еще заинтригован.