Haskell 让do中的表达式导致错误
删除Haskell 让do中的表达式导致错误,haskell,Haskell,删除let(!)=在中翻转valFromObj并替换tweet!“user”使用valFromObj“user”tweet等,一切正常。这是由引起的,这导致(!)的类型被推断为JSObject JSValue->String->Result(JSObject JSValue),因为它在 [1 of 1] Compiling Main ( twitter.hs, interpreted ) twitter.hs:11:27: Couldn't match expe
let(!)=在中翻转valFromObj并替换tweet!“user”
使用valFromObj“user”tweet
等,一切正常。这是由引起的,这导致(!)
的类型被推断为JSObject JSValue->String->Result(JSObject JSValue)
,因为它在
[1 of 1] Compiling Main ( twitter.hs, interpreted )
twitter.hs:11:27:
Couldn't match expected type `[Char]'
with actual type `JSObject JSValue'
Expected type: String
Actual type: JSObject JSValue
In the `user' field of a record
In the first argument of `return', namely
`Status {user = user, text = text}'
Failed, modules loaded: none.
userObject结果状态
makeStatus tweet=do
用户对象结果a
(!)=flip valFromObj
这是由引起的,这导致(!)
的类型被推断为JSObject JSValue->String->Result(JSObject JSValue)
,因为它在
[1 of 1] Compiling Main ( twitter.hs, interpreted )
twitter.hs:11:27:
Couldn't match expected type `[Char]'
with actual type `JSObject JSValue'
Expected type: String
Actual type: JSObject JSValue
In the `user' field of a record
In the first argument of `return', namely
`Status {user = user, text = text}'
Failed, modules loaded: none.
userObject结果状态
makeStatus tweet=do
用户对象结果a
(!)=flip valFromObj
userObject <- tweet ! "user"
makeStatus :: JSObject JSValue -> Result Status
makeStatus tweet = do
userObject <- tweet ! "user"
user <- userObject ! "screen_name"
text <- tweet ! "text"
return Status {user = user, text = text}
where
(!) :: JSON a => JSObject JSValue -> String -> Result a
(!) = flip valFromObj