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