我在Haskell编程并具有以下类型.
type Phonebook = String -> String
现在我必须创建一个返回空电话簿的函数,所以
emptyPhonebook :: Phonebook emptyPhonebook = ???
但什么是空的电话簿?
我的意思是它必须是一个"空"函数,但我如何在Haskell中编写它?
没有空函数这样的东西.
问题是,对于不在电话簿中的姓名,您的电话簿应该返回什么?
如果这是一个学习练习,你可以只返回一个空字符串 - 就像在另一个答案中一样.
但是,更好的电话簿定义是:
type Phonebook = String -> Maybe String
然后你的功能变成:
emptyPhoneBook :: Phonebook emptyPhoneBook _ = Nothing
这就像在C#等语言中使用可空类型一样; 在Maybe
说,你的价值可以是一个字符串,或Nothing
.
为了完整起见,我应该补充一点,如果Maybe String
包含字符串值,则其值前面会有关键字Just
.
例如,如果所讨论的字符串是"Judie",则该值Just "Judie"
不仅仅是"Judie".
这Just
是因为值是类型Maybe String
而不是类型String
.