Есть ли в Haskell типичный формат файла конфигурации или файла свойств и библиотека? - PullRequest
15 голосов
/ 06 января 2011

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

Ответы [ 4 ]

16 голосов
/ 06 января 2011
  1. Перейти к взломать .
  2. Нажмите на " пакетов "
  3. Поиск "config".
  4. Уведомление ConfigFile ( TH ), EEConfig и tconfig .
  5. Прочитайте документацию по пикше
  6. Выберите пару и выполните свою задачу.
  7. Блог о ваших результатах, чтобы остальные из нас могли учиться на вашем новом опыте (спасибо!).

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

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

6 голосов
/ 19 апреля 2014

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

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

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

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

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

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

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

ОБНОВЛЕНИЕ 2018 Обязательно посмотрите dhall

4 голосов
/ 06 января 2011

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

3 голосов
/ 06 января 2011

Пакет configfile выглядит так, как вы хотите.

...