Haskell, Hackage, GHC и производительность. Как решить реальный пример?

Я не знаю лучший способ решить простые (вероятно) проблемы (связанные с хакерством).

Я попросил о помощи по этому поводу (http://stackru.com/questions/12841599/haskell-hackage-ghc-and-productivity-what-to-do), но я не знал, как объяснить.

Сегодня у меня проблема с этим родом.

Конкретная проблема не актуальна, но такова:

`Write a function that, given a string, remove diacritics.`

Пример:

`simpleWord "Cigüeñal" <-> "Ciguenal"

Правильный способ (я думаю) заключается в использовании стандартной нормализации Unicode. В некоторых языках / фреймворках (.Net, PHP, Python, ...) существуют некоторые связанные функции.

В Хаскеле благодаря хакерскому сообществу тоже существует:

`Text.Unicode.Normalization.normalize`

Но я не мог установить с (например) ghc-7.4, но compact-string (это зависит от) потерпеть неудачу.

Исправление для compact-string существует (compact-string-fix) тогда: я не могу использовать cabal для установки (напрямую)?, я должен загрузить и исправить это?, я должен искать другую альтернативу для функции?

Я объяснил конкретный реальный случай (простой или сложный, безразличный), вопрос (для которого я прошу помощи) состоит в том, как можно, начинающий хакеллер, узнать лучший способ выбора правильных библиотек, правильной (сбалансированной) версии ghc, без удара в стену.

Я действительно потерян по этому поводу.

Действительно, большое спасибо за любое предложение.

С наилучшими пожеланиями.

2 ответа

Решение

Вот общий процесс, которому я следую, решая, какие пакеты использовать. Сначала я пытаюсь определить несколько пакетов, которые соответствуют моим потребностям. Затем я более внимательно смотрю на каждую упаковку, чтобы попытаться определить, какие из них являются лучшими для меня, согласно критериям, перечисленным ниже.

  1. Обычно лучше использовать пакеты, которые в настоящее время поддерживаются. Чтобы определить, поддерживается ли пакет в данный момент, я проверяю ссылку "Дата загрузки" на странице описания пакета. (Конечно, есть некоторые старые проверенные пакеты, которые не были изменены в течение веков, потому что они не нуждаются в модификации.)

  2. Обычно лучше использовать зрелые пакеты, поэтому я проверяю номер версии на странице описания пакета. Пакет с номером версии 7.3.5, вероятно, более зрелый, чем пакет версии 0.1.

  3. Обычно лучше использовать хорошо документированные пакеты. Иногда есть хороший пример того, как использовать пакет в документации Haddock (yay!). Я также проверю ссылку "Домашняя страница" на странице описания пакета, потому что часто там будет больше документации.

  4. Обычно лучше использовать популярные пакеты, потому что любые проблемы, вероятно, будут решены быстро, и другие пользователи могут ответить на вопросы. Я обычно делаю поиск в Google и вижу, какие пакеты чаще всего упоминаются в списках рассылки Haskell и Stackru.

  5. Обычно лучше использовать пакеты, которые не требуют большого количества пакетов, которых у меня еще нет, поэтому я проверяю раздел "Зависимости" на странице описания пакета.

Я склонен следовать этой процедуре при выборе пакета для любого языка программирования, а не только для Haskell.

Документация для compact-string говорит: "Этот пакет устарел. Используйте text вместо.".

Документация для text говорит: "Чтобы использовать расширенное и очень богатое семейство функций для работы с текстом Unicode (включая нормализацию, регулярные выражения, нестандартные кодировки, разбиение текста и локали), см. text-icu пакет. ".

Документация для text-icu показывает, что он успешно построен на GHC 7.4 и поддерживает нормализацию Unicode.

Другие вопросы по тегам