這裏的財產是我的代碼:訪問的數據類型
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