我正在尝试使用dhall重写Haksell应用程序中使用的BIG Yaml配置文件。为此,我使用的json-to-dhall
是需要SCHEMA的类型,即重排表达式的类型。问题是实际架构几乎不可能手动编写,因为它涉及很多求和类型(和嵌套求和类型)。我尝试通过将yaml的某些部分手动转换为dhall并运行来生成模式dhall type
。这给出了我可以使用的架构jston-to-dhall
后来。这适用于简单类型,但是现在我面临着(工会)工会的问题。Dhall需要类型注释来写入我用来生成类型的文件...所以我想知道是否有一种方法(使用工具或修改我的haskell应用程序)将Haskell数据转储到正确的dhall文件或至少从Haskell类型生成模式。
是的,您可以从Haskell类型生成Dhall类型。
这是如何执行此操作的示例:
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE TypeApplications #-}
import Data.Text (Text)
import Dhall (Interpret)
import GHC.Generics (Generic)
import Numeric.Natural (Natural)
import qualified Data.Text.IO as Text.IO
import qualified Dhall
import qualified Dhall.Core
data Mood = Happy | Sad
deriving (Generic, Interpret)
data Person = Person { age :: Natural, name :: Text, mood :: Mood }
deriving (Generic, Interpret)
main :: IO ()
main = do
Text.IO.putStrLn (Dhall.Core.pretty (Dhall.expected (Dhall.auto @Person)))
Run Code Online (Sandbox Code Playgroud)
...输出:
$ runghc ./example.hs
{ age : Natural, name : Text, mood : < Happy | Sad > }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
106 次 |
最近记录: |