为啥返回函数叫return?

Posted

技术标签:

【中文标题】为啥返回函数叫return?【英文标题】:Why is the return function called return?为什么返回函数叫return? 【发布时间】:2014-04-24 20:43:00 【问题描述】:

return函数为什么叫return?

描述是:

将值注入一元类型。

这个名字不仅没有意义(对我来说),而且对于来自命令式语言的人来说,它是令人困惑的,其中return 是从函数返回的语言关键字。

【问题讨论】:

我个人认为没有意义,pureApplicative的更好选择。由于每个Monad 都是Applicative 和(希望)pure = return,因此在即将到来的Functor -> Applicative -> Monad 重组中将return 完全排除在Monad 的定义之外并不难。 嗯,它看起来确实像 liftM f x = do x' <- x; return (f x) 等代码中的命令式控制流关键字 这是一个随意的选择,最好只是假设你对英文单词“return”定义的直觉不会帮助你理解 monad return 操作。 责备菲尔·瓦德勒。 :) 我不明白为什么人们认为这是一个基于意见的问题。这是一个有效的问题。 【参考方案1】:

为什么叫它?因为它通常是一元代码块中的最后一个函数。通常使用return 的唯一理由是从您的一元操作中设置最终返回值。

我也认为这是一个非常非常糟糕的名字选择。但我们现在不能修复它......

【讨论】:

其实,现在我们可以了。让我们停止使用return,而始终使用pure【参考方案2】:

这纯粹是历史性的。大多数 Haskell 开发人员都认为这是一个坏名字。它打破了最小惊喜原则。相当多的旧库函数有点不稳定(我想到了过多的错误处理方案和一些其他类型类元素名称)。

正如@bheklilr 所说,正在进行的重组应该会有所帮助:

http://www.haskell.org/haskellwiki/Functor-Applicative-Monad_Proposal

如果您对 Haskell 的元数据感兴趣,这些是很好的起点:

http://www.haskell.org/haskellwiki/Future_of_Haskell http://www.haskell.org/haskellwiki/Category:History

【讨论】:

感谢您的链接。【参考方案3】:

答案是因为它返回了一些东西。例如,您在 php 中使用它 - 在其中回显某些内容,它会返回该文本或数据。但功能的主要力量并不在于直接回显数据。它们的能力在于存储数据并返回变量/数组或类似的数据存储位置。

您还可以根据数据/计算返回真或假。在类中,函数被命名为方法并且做同样的事情——返回一些东西。在 java 中返回可以是 void(回显数据),或严格数据类型(例如布尔值,或字符串、数组等)。

返回函数后没有返回数据。

【讨论】:

这个答案在技术上并没有错,但部分原因是它是 too vague to actually make any statement — 甚至不清楚您实际上是在谈论 Haskell 中的 return 方法。您知道这与过程/OO 语言中的return 关键字“几乎但不完全”完全不同,对吧? — 关于您的第一句话:每个 function 在 Haskell 中返回一些内容。

以上是关于为啥返回函数叫return?的主要内容,如果未能解决你的问题,请参考以下文章

为啥返回带有箭头函数的对象时,array.map 中需要 return 关键字?

oracle函数中可以有return为啥还要out参数

为啥构造函数只能返回一个对象?

python 函数返回值(总结)

c语言中的RETURN()返回值是啥意思?

为啥这个函数返回垃圾值