这里的财产是我的代码:访问的数据类型
data Person = Person {name :: String}
greet :: Person -> String -> String
greet person lastName =
"Hi my name is " ++ name ++ ", last name: " ++ lastName
这是我的,我在这里写了什么解释:对于其中存在的方法name
返回一个数据类型Person
串。
还有一个函数greet
它需要一个Person
和String
并返回一个不同的String
。但是,问候方法调用Person
数据类型的name
方法来连接此字符串。
然而,当我编译这段代码,我得到这个错误:
Couldn't match expected type `[Char]' with actual type `Person -> String'
这究竟是为什么?
什么是RecordWildCards? – dopatraman
@dopatraman这是所谓的语言扩展。除Haskell语言规范外,这些是一些语法或行为。它们是编译器特定的,但GHC支持相当数量的编译器。其中一些有助于编写与C库的绑定,一些用于更高级的系统功能,另一些用于扩展语法,如上面的语法。例如,为了让字符串文字也可以作为'Text'或'ByteString',你可以使用'OverloadedStrings'扩展名。有很多有趣的和有用的,但你会在学习Haskell时遇到它们。 – bheklilr