Есть ли типичный формат файла конфигурации или свойства и библиотека в Haskell?

Мне нужен набор пар ключ-значение для чтения конфигурации из файла. Я попытался использовать показ на Data.Map, и он не выглядит совсем как то, что я хочу. Похоже, это то, что многие другие уже сделали, поэтому мне интересно, есть ли стандартный способ сделать это и какую библиотеку использовать.

Ответы

Ответ 1

  • Перейдите в hackage.
  • Нажмите " packages"
  • Найдите "config".
  • Обратите внимание на ConfigFile ( TH), EEConfig и tconfig.
  • Прочитайте документацию от Haddock
  • Выберите пару и выполните свою задачу.
  • Блог о ваших выводах, чтобы все остальные могли узнать из вашего нового найденного опыта (спасибо!).

EDIT: Недавно я использовал configurator - это было достаточно просто. Я предлагаю вам попробовать этот!

(Да, да. Если бы я взял свой собственный совет, я сделал бы блог для вас всех)

Ответ 2

В категории конфигурации Hackage должны быть перечислены все соответствующие библиотеки: http://hackage.haskell.org/packages/#cat:Configuration

Я сам изучил эту тему, и мой вывод:

  • configurator очень хорошо, но в настоящее время он предназначен только для редактируемых пользователем конфигураций. Приложение только считывает конфигурацию и не может ее изменить. Так что это больше для серверных приложений.
  • tconfig имеет простой API и выглядит так, как будто я хотел, может быть, немного сырым, пока не понял его unmaintained и что некоторые совершают, которые действительно важны для использования приложения, применяются на github, но пакет хакеров не обновлялся

Другие решения не выглядели так, как будто они работают для меня, мне не понравился API, но все приложения (и вкусы) отличаются.

Я думаю, что использование JSON, к примеру, не является хорошим решением, потому что по крайней мере с Aeson, когда вы добавляете новые настройки в новую версию, старый JSON без нового участника из предыдущей версии не загружается. Кроме того, я нахожу это решение немного подробным.

Завершение моего исследования заключается в том, что я написал свою собственную библиотеку app-settings, которая направлена ​​на ключевое значение, чтение-запись, с API как succint и типа безопасным, насколько это возможно. И вы найдете его также в ссылках на хакеры для категории настроек, которые я дал.

Итак, я думаю, что configurator является стандартом для конфигураций только для чтения (и это очень мощно, вы можете разделить файл конфигурации с импортом, например). Для чтения-записи существует множество небольших библиотек, некоторые из которых не имеют никакого значения, и я не считаю реальным стандартом.

Ответ 4

Я бы также предложил просто использовать Text.JSON или одну из доступных библиотек yaml (я предпочитаю сам JSON, но...).