Haskell中是否有典型的配置文件格式和库?

18

我需要从一个文件中读取一组键值对用于配置。我尝试使用Data.Map的show函数,但它看起来并不像我想要的。似乎有很多其他人可能已经做过这件事情,所以我想知道是否有标准的方法和要使用的库。


taotree:不确定您是否知道编辑的相关信息,所以......“我最近使用了配置器 - 它非常简单易用且功能齐全。我建议您尝试一下!”它真的很简单且功能齐全。 - Thomas M. DuBuisson
4个回答

17
  1. 前往hackage
  2. 点击“packages”。
  3. 搜索“config”。
  4. 注意ConfigFile(TH)、 EEConfigtconfig
  5. 阅读Haddock文档。
  6. 选择一些包并实现你的任务。
  7. 博客分享你的发现,让我们其他人也能从你新获得的专业知识中学习(谢谢!)。

编辑: 我最近使用了configurator - 它很容易使用。我建议你也试试这个!

(是的,是的,如果我听自己的建议,我会为大家写一个博客)


6
“阅读文档” - 在学习Haskell时,我觉得这很困难。 - matthias krull
1
谢谢你!虽然听起来有点严厉,但我很感激你写下了解决方法,这样我们就有了同类问题的解决方案 :-)。 - peni4142
很高兴你觉得有用,@peni4142。最近我主要使用dhall来进行内部配置,而对于需要公开分享的内容则使用tomland(一个toml解析器)。 - Thomas M. DuBuisson

8
Hackage上的配置类别应列出所有相关库:http://hackage.haskell.org/packages/#cat:Configuration 经过自己的研究,我的结论是:
- configurator很好,但目前仅适用于用户编辑的配置。应用程序只读取配置而不能修改它。因此,它更适合于服务器端应用程序。 - tconfig具有简单的API,看起来是我想要的,可能有些原始,直到我意识到它是未维护的,并且一些重要的提交已应用于Github,但Hackage包没有更新。 - 其他解决方案看起来对我不起作用,我不喜欢API,但每个应用程序(和口味)都不同。
我认为例如使用JSON并不是一个好的解决方案,因为至少在Aeson中,当您在新版本中添加新设置时,旧版本中没有新成员的JSON将无法加载。此外,我发现这种解决方案有些啰嗦。
我的研究结论是,我编写了自己的库app-settings,它旨在实现键值、读写,具有简洁和类型安全的API。您也可以在我给出的配置类别的Hackage链接中找到它。
因此,总结一下,我认为configurator是只读配置的标准(而且非常强大,您可以使用导入拆分配置文件)。对于读写,有许多小型库,其中一些未维护,并且我认为没有真正的标准。 更新2018请务必查看dhall

4

我建议只使用或可用的yaml库之一(我个人更喜欢JSON,但...)。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接