我有问题,readFile返回一个IO String但解析期望一个常规String(或在下面的例子中ByteString).我虽然只是使用,liftM但下面的例子仍然失败.问题是什么?
import Data.Aeson
import Data.Attoparsec
import Data.ByteString (ByteString, pack)
import Data.Maybe
import Network.HTTP
import Network.URI
import qualified Data.ByteString.Char8 as C
import Control.Monad
main = do
myres <- liftM parse json (C.readFile "dummy.json")
print myres
Run Code Online (Sandbox Code Playgroud)
错误:
Couldn't match expected type `t0 -> Parser a0'
with actual type `Parser Value'
In the second argument of `liftM', namely `json'
In a stmt of a 'do' block:
myres <- liftM parse json (C.readFile "dummy.json")
In the expression:
do { myres <- liftM parse json (C.readFile "dummy.json");
print myres }
Run Code Online (Sandbox Code Playgroud)