- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
纯函数是没有副作用的函数——它不能执行任何类型的 I/O,也不能修改任何东西的状态——而且它是引用透明的——当使用相同的输入多次调用时,它总是给出相同的输出。
为什么用“纯”这个词来描述具有这些属性的函数?谁首先以这种方式使用“纯粹”这个词,何时?还有其他词的意思大致相同吗?
最佳答案
为了回答你的第一个问题,数学函数通常在某些指定变量方面被描述为“纯”函数。例如:
the first term is a pure function of x and the second term is a pure function of y
因此,我认为您不会找到真正的“第一次”出现。
对于编程语言,稍微搜索一下就会发现 Ada 95 (pragma Pure
),High Performance Fortran (1993) (PURE
) 和 VHDL-93 (pure
) 都包含“纯函数”的正式概念。
Haskell (1990) 相当明显,但纯度并不明确。 GCC 的 C 有 various function attributes对于各种不同级别的“纯粹”。
几本书:Rationale for the C programming language (1990) 使用该术语,Programming Languages and their Definitions 也是如此。 (1984)。然而,两者显然都只使用了一次! Programming the IBM Personal Computer, Pascal(也是 1984 年)使用了这个术语,但从 Google 的有限观点来看,并不清楚 Pascal 编译器是否支持它。 (我怀疑不是。)
一个有趣的注释是,Ada 的前身 Green,actually had a fairly strict 'function' definition - 甚至不允许内存分配。然而,它在成为 Ada 之前就被放弃了,其中函数可以有副作用(I/O 或全局变量),但不能修改它们的参数。
C28-6571-3 (第一本 PL/I 引用手册,在编译器之前编写)表明 PL/I 早在 1966 年就以 REDUCIBLE
(= pure) 属性的形式支持纯函数 -编译器首次发布时。 (这也回答了你的第三个问题。)
最后一个文档特别指出,它包含 REDUCIBLE
作为自文档 C28-6571-2 以来的新更改。因此,REDUCIBLE
(这可能是编程语言中正式纯函数的第一个化身)出现在 1966 年 1 月到 7 月之间。
更新:Google 网上论坛上最早的“纯函数”实例 is from 1988 ,这可以轻松地推迟书籍引用文献的日期。
关于function - 为什么 "pure"函数被称为 "pure"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7750533/
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 8 年前。 Improve
我的理解是,“纯 OCaml”是指 OCaml 中标准的所有内容,包括其非“纯”功能特性,而“纯功能”是指通常的属性:没有副作用、没有异常处理等。从这个意义上说,“纯 OCaml” 实现与使用 C 或
Haskell 被称为“纯函数式语言”。 在这种情况下“纯粹”是什么意思?这会给程序员带来什么后果? 最佳答案 在纯函数式语言中,您不能做任何有副作用的事情。 副作用意味着计算表达式会改变某些内部状态
这是接口(interface)契约类的一部分。 [Pure] public bool IsDirty() { throw new NotImplementedException(); } pu
我想问一下 pure-g 和 pure-g-r 有什么区别。我曾经认为响应式会让我的 div 在较低的分辨率下不会崩溃但是使用 pure-g 也帮助我实现了同样的效果,所以我对它们之间的正确区别感到困
在source code of GHC.Base , Applicative Maybe 定义为: instance Applicative Maybe where pure = Just
这个问题在这里已经有了答案: Purpose of (0, obj.method)(param1, param2) in Closure Compiler minified code (1 个回答)
如何向 React 发出信号,表明函数组件是“纯”的,相当于组件类的 React.PureComponent ? function C(props) { return {props.n} } 没有
已阅读官方React documentation ,我遇到过this关于PureComponent: Furthermore, React.PureComponent’s shouldComponen
我有以下代码片段,我想知道它是纯 C 还是包含一些 C++ 元素。这个问题源于我认为它只是 C,但有些编译器不接受代码。 // User struct derived from Function
一个简单的问题。我应该如何在数据库中存储电话号码和电子邮件地址?只是像 email@email.com 这样的纯文本(或数字),还是用 key 对其进行编码更好(有点像密码在数据库中的保存方式)。在那
有人可以向我展示一个示例,说明我如何使用 purecss.io 来实现固定宽度/响应式设计,类似于 bootstrap 等 960 网格???? 流体宽度根本不适用于我的特定设计,这是我目前拥有的:
是否有一套通用规则/指南可以帮助您了解何时更喜欢pragma Pure,pragma Preelaborate或其他什么东西? standard (Ada 2012)中提供的规则和定义有些繁琐,我很高
我试图区分包含字母字符数据的单元格和数字数据单元格。我使用 istext() 和 isnumber() 取得了部分成功。但是当出现字母数字字符时,这种逻辑就会失败。 我的目的是检测只有字母的单元格。包
在Clash官方网站上,有以下示例: >>> sampleN @System 4 (register 0 (pure (8 :: Signed 8))) 我知道什么是纯函数,但为什么这里有 this
据我了解,javascript 要么在浏览器中运行,要么作为 Node.js 中的后端运行。 浏览器或 Node.js,根据您运行 JavaScript 的位置,将通过 Web API 或 C++ A
class Applicative f => Monad f where return :: a -> f a (>>=) :: f a -> (a -> f b) ->
在我看来,Fortran 中所谓的纯函数对于那些使用函数式编程的人来说似乎不够纯粹。这是我的问题。假设我有以下代码: MODULE basics IMPLICIT NONE INTEGER,
在Clash官方网站上,有以下示例: >>> sampleN @System 4 (register 0 (pure (8 :: Signed 8))) 我知道什么是纯函数,但为什么这里有 this
我是一名优秀的程序员,十分优秀!