当前位置:  开发笔记 > 编程语言 > 正文

从另一个函数返回一个带有签名String - > String的函数

如何解决《从另一个函数返回一个带有签名String->String的函数》经验,为你挑选了1个好方法。

我在Haskell编程并具有以下类型.

type Phonebook = String -> String

现在我必须创建一个返回空电话簿的函数,所以

emptyPhonebook :: Phonebook
emptyPhonebook = ???

但什么是空的电话簿?

我的意思是它必须是一个"空"函数,但我如何在Haskell中编写它?



1> S.L. Barth -..:

没有空函数这样的东西.

问题是,对于不在电话簿中的姓名,您的电话簿应该返回什么?
如果这是一个学习练习,你可以只返回一个空字符串 - 就像在另一个答案中一样.

但是,更好的电话簿定义是:

type Phonebook = String -> Maybe String

然后你的功能变成:

emptyPhoneBook :: Phonebook
emptyPhoneBook _ = Nothing

这就像在C#等语言中使用可空类型一样; 在Maybe说,你的价值可以是一个字符串,或Nothing.

为了完整起见,我应该补充一点,如果Maybe String包含字符串值,则其值前面会有关键字Just.
例如,如果所讨论的字符串是"Judie",则该值Just "Judie"不仅仅是"Judie".
Just是因为值是类型Maybe String而不是类型String.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有