gpt4 book ai didi

function - 为什么 "pure"函数被称为 "pure"?

转载 作者:行者123 更新时间:2023-12-02 16:49:20 27 4
gpt4 key购买 nike

纯函数是没有副作用的函数——它不能执行任何类型的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com