首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个值打印/编码到Dhall中?

如何将一个值打印/编码到Dhall中?
EN

Stack Overflow用户
提问于 2020-08-15 11:01:10
回答 1查看 165关注 0票数 0
代码语言:javascript
复制
{-# 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中打印/编码的任何引用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-15 17:54:38

您可以这样漂亮地打印一个Haskell值作为等效的Dhall表达式:

代码语言:javascript
复制
{-# 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63425283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档