我已经开始学习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)
提前致谢 :)
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)
归档时间: |
|
查看次数: |
211 次 |
最近记录: |