无法匹配预期类型具有实际类型IO()的人员

bli*_*630 1 io haskell types

我已经开始学习Haskell,并阅读Learn You Haskell.第8章处理"制作我们自己的类型和类型类",我有一个错误信息,这对我来说是一个问题.可能解决方案是一个小问题,但我找不到它,所以请揭示提示,或者帮我解释一下.

data Person = Person { firstName :: String  
                     , lastName :: String  
                     , age :: Int  
                     } deriving (Eq, Show, Read)  

mikeD = Person {firstName = "Michael", lastName = "Diamond", age = 43}  

main = print $ read "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" :: Person
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息

Couldn't match expected type `Person' with actual type `IO ()'
In a stmt of a 'do' block:
    print
    $ read
        "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" ::
      Person
In the expression:
  do { print
       $ read
           "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" ::
         Person }
In an equation for `main':
    main
      = do { print
             $ read
                 "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" ::
               Person }
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

Zet*_*eta 5

main = 
  print $ read "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" :: Person
Run Code Online (Sandbox Code Playgroud)

被解析为

main = 
  (print $ read "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}") :: Person
Run Code Online (Sandbox Code Playgroud)

而你的意思是

main = 
  print (read "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" :: Person )
Run Code Online (Sandbox Code Playgroud)