我正在使用 Dhall 接受用户配置。有些字段是必填的,而其他字段是可选的,当用户未指定时应使用其默认值。 这是我目前拥有的:
override :: FilePath -- user
-> FilePath -- default
-> IO Config
override user def = parseConfig $ def ++ " // " ++ user
finalConfig :: IO Config
finalConfig = do user <- getUserConfig
def <- getDataFileName "defaults.dhall"
return (user `override` defaults)
显然连接文件路径并插入
//
运算符已经够脏的了。我想知道是否有更优雅的方法。
因此,使用当前的 Haskell API 来做这件事并不符合人体工程学,但我只是提出了一个拉取请求来添加一些新的实用程序,这将使这变得更容易。一旦合并和发布,您将能够解释和解码
Expr
而不是 Text
,这样您就不必使用原始字符串。