Function 返回带有签名字符串的函数->;来自另一个函数的字符串
我用Haskell编程,有以下类型Function 返回带有签名字符串的函数->;来自另一个函数的字符串,function,haskell,Function,Haskell,我用Haskell编程,有以下类型 type Phonebook = String -> String 现在我必须创建一个返回空电话簿的函数,所以 emptyPhonebook :: Phonebook emptyPhonebook = ??? 但什么是空电话簿 我的意思是它必须是一个“空”函数,但我如何在Haskell中编写它呢?我不必是一个空函数,它必须是一个String->String函数,即使id也可以 emptyPhonebook :: Phonebook emptyPhon
type Phonebook = String -> String
现在我必须创建一个返回空电话簿的函数,所以
emptyPhonebook :: Phonebook
emptyPhonebook = ???
但什么是空电话簿
我的意思是它必须是一个“空”函数,但我如何在Haskell中编写它呢?我不必是一个空函数,它必须是一个
String->String
函数,即使id
也可以
emptyPhonebook :: Phonebook
emptyPhonebook = \_ -> ""
看看这个:没有空函数这样的东西 问题是,对于电话簿中没有的姓名,您的电话簿应该返回什么内容?
如果这是一个学习练习,您可以只返回一个空字符串-如中所示 但是,对电话簿的更好定义是:
type Phonebook = String -> Maybe String
然后,您的函数变成:
emptyPhoneBook :: Phonebook
emptyPhoneBook _ = Nothing
这就像在C#等语言中使用可空类型一样;Maybe
表示您的值可以是字符串,也可以是Nothing
为了完整起见,我应该补充一点,如果Maybe String
包含一个字符串值,那么它的值前面将有关键字Just
例如,如果所讨论的字符串是“Judie”,则值将仅为“Judie”,而不仅仅是“Judie”。
之所以只使用
,是因为值的类型是可能是String
,而不是String
类型