我使用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)
很明显,连接文件路径和插入//
操作符已经够麻烦的了。我想知道是否有一个更优雅的方法来解决这个问题。
1条答案
按热度按时间kokeuurv1#
因此,使用当前的Haskell API并不符合人体工程学,但我只是提出了a pull request,以添加一些新的实用程序,使这更容易。一旦它被合并和释放,你就可以解释和解码
Expr
而不是Text
,这样你就不必处理原始字符串了。