Haskell 中有典型的配置或属性文件格式和库吗?
我需要一组键值对来从文件中读取配置。我尝试在 Data.Map 上使用 show,但它看起来根本不像我想要的。看来这是许多其他人可能已经做过的事情,所以我想知道是否有标准的方法来做到这一点以及使用什么库。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我需要一组键值对来从文件中读取配置。我尝试在 Data.Map 上使用 show,但它看起来根本不像我想要的。看来这是许多其他人可能已经做过的事情,所以我想知道是否有标准的方法来做到这一点以及使用什么库。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
编辑:
我最近使用了 配置器 - 这很简单。我建议你试试那个!
(是的,是的。如果我采纳自己的建议,我会为你们所有人创建一个博客)
EDIT:
I've recently used configurator - which was easy enough. I suggest you try that one!
(Yes, yes. If I took my own advice I would have made a blog for you all)
Hackage 上的配置类别应列出所有相关库:
http://hackage.haskell.org/packages/#cat:Configuration
我现在我自己研究了这个主题,我的结论是:
其他解决方案未 更新看起来它们对我有用,我不喜欢 API,但每个应用程序(和口味)都是不同的。
我认为使用 JSON 为例并不是一个好的解决方案,因为至少在 Aeson 中,当您在新版本中添加新设置时,没有先前版本中的新成员的旧 JSON 将无法加载。另外,我发现该解决方案有点冗长。
我的研究结论是,我编写了自己的库 app-settings,它目标是键值、读写,并具有尽可能简洁和类型安全的 API。您还可以在我提供的配置类别的 hackage 链接中找到它。
总而言之,我认为 configurator 是只读配置的标准(而且它非常强大例如,您也可以使用导入来分割配置文件)。对于读写,有很多小型库,其中一些没有维护,而且我认为没有真正的标准。
更新 2018 请务必查看 dhall
The configuration category on Hackage should list all relevant libraries:
http://hackage.haskell.org/packages/#cat:Configuration
I have researched the topic myself now, and my conclusion is:
Other solutions didn't look like they'd work for me, I didn't like the API, but every application (and tastes) are different.
I think using JSON for instance is not a good solution because at least with Aeson when you add new settings in a new release, the old JSON without the new member from the previous version won't load. Also, i find that solution a bit verbose.
The conclusion of my research is that I wrote my own library, app-settings, which aims to be key-value, read-write, with a as succint and type-safe API as possible. And you'll find it also in the hackage links for the configurations category that I gave.
So to summarize, I think configurator is the standard for read-only configurations (and it's very powerful too, you can split the configuration file with imports for instance). For read-write there are many small libraries, some unmaintained, and no real standard I think.
UPDATE 2018 be sure to look at dhall
我还建议仅使用
Text.JSON
或可用的 yaml 库之一(我自己更喜欢 JSON,但是......)。I'd also suggest just using
Text.JSON
or one of the yaml libraries available (I prefer JSON myself, but...).configfile 包 看起来像你想要的。
The configfile package looks like what you want.