gpt4 book ai didi

haskell - 无法将类型 ‘[Char]’ 与 ‘Data.Text.Internal.Text’ 匹配

转载 作者:行者123 更新时间:2023-12-02 05:40:03 24 4
gpt4 key购买 nike

我想弄清楚,如何构建 JSONHaskell用下面的例子:

module Main where


import GHC.Exts
import Data.Aeson
import qualified Data.Text.Lazy.IO as T
import qualified Data.Text.Lazy.Encoding as T

val :: Value
val = Object $ fromList [
("numbers", Array $ fromList [Number 1, Number 2, Number 3]),
("boolean", Bool True) ]

main :: IO ()
main = T.putStrLn . T.decodeUtf8 . encode $ val

当我尝试编译时,编译器提示:
    • Couldn't match type ‘[Char]’ with ‘Data.Text.Internal.Text’
Expected type: Item Object
Actual type: ([Char], Value)
• In the expression: ("boolean", Bool True)
In the first argument of ‘fromList’, namely
‘[("numbers", Array $ fromList [Number 1, Number 2, ....]),
("boolean", Bool True)]’
In the second argument of ‘($)’, namely
‘fromList
[("numbers", Array $ fromList [Number 1, Number 2, ....]),
("boolean", Bool True)]’
|
12 | ("boolean", Bool True) ]
| ^^^^^^^^^^^^^^^^^^^^^^

最佳答案

你需要把 OverloadedStrings文件顶部的扩展名:

#!/usr/bin/env stack
-- stack script --resolver lts-12.7
{-# LANGUAGE OverloadedStrings #-}

import Data.Aeson
import qualified Data.Text.Lazy.Encoding as T
import qualified Data.Text.Lazy.IO as T
import GHC.Exts

val :: Value
val =
Object $
fromList
[ ("numbers", Array $ fromList [Number 1, Number 2, Number 3])
, ("boolean", Bool True)
]

main :: IO ()
main = T.putStrLn . T.decodeUtf8 . encode $ val

在执行它们时:
$ stack fuse.hs
{"boolean":true,"numbers":[1,2,3]}

要了解它起作用的原因, refer to this answer .

关于haskell - 无法将类型 ‘[Char]’ 与 ‘Data.Text.Internal.Text’ 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54998541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com