Многие типы String (ByteString)

Я хочу сжать свою заявкуСетевой трафик.

По словам (последний?)Рейтинг популярности Haskell ",Zlib кажется довольно популярным решением. Zlib»интерфейс используетByteStrings:

compress :: ByteString -> ByteString
decompress :: ByteString -> ByteString

Я использую обычныеStrings, которые также являются типами данных, используемымиreadshow, а также :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сByteStrings?

Кстати, я обнаружил, что это работает сData.ByteString.Lazy.Char8ByteString, но я'Я все еще заинтригован.

Ответы на вопрос(3)

Ваш ответ на вопрос