如何解决如何将值打印/编码到Dhall中?
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
import Dhall
data Example = Example { foo :: Natural,bar :: Vector Double }
deriving (Generic,Show)
instance Interpret Example
main :: IO ()
main = do
putStrLn "Hello,Haskell!"
x <- input auto "./example.dhall"
print (x :: Example)
在上面的示例中,如何代替将Example
编码为dhall值,因此本质上是类型为Example -> String
的函数?似乎找不到在haddocks中有关打印/编码的任何引用。
解决方法
这是如何漂亮地将Haskell值打印为等效的Dhall表达式:
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}
import Dhall (FromDhall,Natural,ToDhall,Vector)
import Dhall.Pretty (CharacterSet(..))
import GHC.Generics (Generic)
import qualified Data.Text.Prettyprint.Doc.Render.Text as Prettyprint.Text
import qualified Dhall
import qualified Dhall.Pretty
import qualified Dhall.Core
data Example = Example { foo :: Natural,bar :: Vector Double }
deriving (FromDhall,Generic,Show,ToDhall)
main :: IO ()
main = do
x <- Dhall.input Dhall.auto "./example.dhall"
let expression = Dhall.embed Dhall.inject (x :: Example)
let doc = Dhall.Pretty.prettyCharacterSet Unicode expression
Prettyprint.Text.putDoc doc
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。