Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 返回带有签名字符串的函数->;来自另一个函数的字符串_Function_Haskell - Fatal编程技术网

Function 返回带有签名字符串的函数->;来自另一个函数的字符串

Function 返回带有签名字符串的函数->;来自另一个函数的字符串,function,haskell,Function,Haskell,我用Haskell编程,有以下类型 type Phonebook = String -> String 现在我必须创建一个返回空电话簿的函数,所以 emptyPhonebook :: Phonebook emptyPhonebook = ??? 但什么是空电话簿 我的意思是它必须是一个“空”函数,但我如何在Haskell中编写它呢?我不必是一个空函数,它必须是一个String->String函数,即使id也可以 emptyPhonebook :: Phonebook emptyPhon

我用Haskell编程,有以下类型

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
类型