Текст или BYTESTRING

Добрый день.

Одна вещь, которую я сейчас ненавижу о Haskell, это количество пакетов для работы со строкой.

Сначала я использовал родной Haskell [CHAR] Строки, но когда я попытался начать использовать библиотеки Hackage, то полностью потеряны в бесконечных преобразованиях. Каждый пакет, кажется, использует различные структуры реализации, некоторые принимают собственную вещь ручной работы.

Далее я переписал свой код с помощью data.text Строки и Расширение Расширение , я выбрал текст , потому что он имеет более широкий набор функций, но, похоже, Многие проекты предпочитают BYTRING .
Кто-то может дать краткое рассуждение, зачем использовать один или иной?

PS: BTW Как конвертировать из Text - BYTESTRING ?

не мог соответствовать ожидаемому типу Data.bytestring.lazy.internal.bytestring против предполагаемого типа текст Ожидаемый тип: io data.bytestring.lazy.internal.bytestring Представленный тип: IO Text

Я попробовал encodeutf8 из data.text.encoding , но не удачи:

не удалось сопоставить ожидаемый тип data.bytestring.lazy.internal.bytestring против предполагаемого типа Data.bytestring.internal.byteString

UPD:

Спасибо за ответы, что * куски хороши выглядят как способ пойти, но я несколько шокировал результатом, моя оригинальная функция выглядела так:

htmlToItems :: Text -> [Item]
htmlToItems =
    getItems . parseTags . convertFuzzy Discard "CP1251" "UTF8"

А теперь стал:

htmlToItems :: Text -> [Item]
htmlToItems =
    getItems . parseTags . fromLazyBS . convertFuzzy Discard "CP1251" "UTF8" . toLazyBS
    where
      toLazyBS t = fromChunks [encodeUtf8 t]
      fromLazyBS t = decodeUtf8 $ intercalate "" $ toChunks t

и да, эта функция не работает, потому что ее неправильно, если мы поставляем текст , то мы уверены, что этот текст правильно закодирован и готов к использованию и преобразованию Это глупо, но такое многословное преобразование все еще должно происходить где-то снаружи HTMLTOITEMS .

76
задан MasterMastic 4 June 2014 в 15:35
поделиться