![]() |
1
24
在函数式编程中 Referential Transparency ,这意味着您可以用函数值替换函数,而无需更改程序。 是的 在数学上也是,但是 这是 不一定是真的 用命令式语言。 A 定义为:将元素从一个集合(a)映射到另一个集合(B)的关系,将第一个集合中的每个元素只映射到另一个集合中的一个。
主要的区别是
如果你打电话
math和C函数的另一个区别是,在math中,不能使函数从非空集变为空集(在C中,这是:不要求总是用函数返回某些东西)。而且,并非所有函数都是 computable uncountable 集合(如f:R->R)(在C中有浮点数,但它们只表示实数的缩减集合,这是有限的)。 总结 :
|
![]() |
2
6
这取决于领域(我不是指功能领域,我是指学习领域),也可能取决于语言。
正如你所看到的,如果没有一些人人都同意的标准协议,这些差异实际上是不可客观定义的。 |
![]() |
3
3
我认为最重要的区别是数学中的函数(和函数编程)不能改变状态,而(命令式)编程函数可以。 |
![]() |
4
2
其他答案是正确的-这是两个不同的事情。相反,我会证明他们是有关联的。我将用
假设您有一种支持异常的语言。在这种情况下,可以考虑一个编程函数
有两个功能的
想想不确定性。如果你有一个函数
与全局状态相同。如果你把每个全局变量作为一个函数和结果的参数,你可以认为没有全局变量,每个函数都接受所有全局状态,语言在编写时必须交出状态。函数
输入/输出也可以这样做,我在另一篇文章中描述了这一点 SO answer . 组成“有效”功能的“魔力”是:
命令式编程中的函数实际上是数学函数 ,但具有非常奇怪的结果类型,这些结果类型也描述了特殊效果。这是Haskell等纯函数式语言所采用的方法。 |
![]() |
5
1
计算机科学中的函数是一段代码,它接受输入,做某事,并可能返回输出,但它可以在两者之间做很多事情。它可以获取网页,发送电子邮件,播放视频,等等。
|
![]() |
6
1
数学函数本质上是陈述式的,即它们总是有“是什么”的描述,而计算机科学中的函数是必需的,即它们有“如何”的描述。 参考:计算机程序的结构和解释。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |