2014-01-02 3 views
7

В тот же день все использовали текстовую обработку с помощью String. Но затем некоторые люди отметили, что это на самом деле очень, очень неэффективно, и появился пакет ByteString.Выбор пакета пакета Haskell

ByteString отлично подходит для обработки двоичных данных. Но в скором времени люди отметили, что ByteString.Char8 на самом деле является массивным kludge, и то, что вы действительно хотите, это real Работа с Unicode для внешних данных. И с этим было рождено около тридцати похожих, но несовместимых пакетов Haskell для работы с упакованными строками Unicode. И ни у кого из них не могло быть никакого отношения, потому что ... ну, тридцать слишком много!

Мой вопрос: эта проблема еще исправлена? Другими словами, сообщество установило один пакет для выполнения этой работы? И если да, то какой из них?

+0

ли не [ 'Text'] (http://hackage.haskell.org/package/text) сделать эту работу? –

+0

@ LukeTaylor Когда я последний раз смотрел, «текст» был только одним из примерно тридцати похожих пакетов, делающих подобную вещь, но все несовместимо. Это было давно ... – MathematicalOrchid

+0

С тех пор многое изменилось. «Текст» - это далекий стандарт для такого рода вещей. –

ответ

11

Я считаю, что нынешний золотой стандарт Data.Text, который вы можете установить с

$ cabal install text 

и которые вы должны импортировать квалифицируется как

import qualified Data.Text as T 

Вы создаете Text значения в коде либо явно как в

>> let str = T.pack "Hello, world" 

или с помощью расширения на OverloadedStrings язык

>> :set -XOverloadedStrings 
>> let str = "Hello, world" :: Text 
+0

Это на платформе Haskell? – MathematicalOrchid

+0

@MathematicsOrchid Да, см. Раздел «Дополнительные библиотеки платформ» --- http://www.haskell.org/platform/changelog.html – bheklilr

+0

ОК, так что это на платформе, и это рекомендуемая реализация. Критерий сортировки. – MathematicalOrchid

Смежные вопросы