gpt4 book ai didi

haskell - 无法将预期类型 'Data.ByteString.Lazy.Internal.ByteString' 与实际类型 '[Char]' 匹配

转载 作者:行者123 更新时间:2023-12-02 06:20:22 28 4
gpt4 key购买 nike

我正在尝试在我的 Haskell 代码中启动并运行一个简单的 Json 解析器,我遇到了 Data.Aeson,这似乎是解决我的问题的可行解决方案

我关注了example code on the page ,并进行一些小的修改,这就是我得到的:

{-#LANGUAGE OverloadedStrings #-}

import Data.Aeson
import Data.Text
import Control.Applicative
import Control.Monad

data Person =
Person { firstName :: Text
, lastName :: Text
, age :: Int
} deriving Show

instance FromJSON Person where
parseJSON (Object v) =
Person <$> v .: "f_name"
<*> v .: "l_name"
<*> v .: "age"
parseJSON _ = mzero

在 GHCi 中运行以下命令会导致标题中出现令人讨厌的消息:

decode "{\"f_name\":\"Haskell\", \"l_name\":\"Curry\",\"age\":114}" :: Maybe Person

那么,这里有人知道出了什么问题吗?我几乎完全按照示例代码编写,为什么会失败?

最佳答案

在ghci中调用decode之前,需要执行:set -XOverloadedStrings,这样字符串文字就会被视为ByteString而不是String。模块中的编译指示仅适用于模块中的代码,不适用于您在 ghci 中执行的操作。

关于haskell - 无法将预期类型 'Data.ByteString.Lazy.Internal.ByteString' 与实际类型 '[Char]' 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21988831/

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