clojure - 函数式编程中的数学函数

标签 clojure functional-programming

我刚刚开始学习 clojure。由于它属于函数式编程的类别,因此第一步我要弄清楚它与命令式编程有何不同。所以我从维基百科和其他来源学到了一些原始知识。所以我对这句话很困惑

命令式编程中有函数,函数式编程中有数学函数。这里数学函数到底是什么意思?它和函数有什么不同。

从数学角度考虑函数 f(x)=X^2+X+1 在面向对象编程中,我们编写一个函数,它接受参数 x 并返回计算值。我相信函数式编程也是如此。那么它是什么意思

    Treats computation as the evaluation of mathematical functions 
and avoids changing-state and mutable data. 

感谢您的帮助!!

最佳答案

数学函数是指使用相同输入调用时始终返回相同值的函数。例如,以下不是数学函数:

a = 0
def f(x):
  a += 1
  return x + a

因为,当然,如果您使用相同的 x 多次调用它,您将得到不同的值。发生这种情况是因为 f 递增 a,这就是所谓的副作用,也是函数式编程中应该避免的情况。

关于clojure - 函数式编程中的数学函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790545/

相关文章:

clojure - 如何更好地迭代 Clojure 中的状态(monad?)

javascript - "pivoting"多维数组时避免嵌套映射

clojure - 为什么我的 lein re-frame 模板中有 clj 和 cljs 文件夹?

performance - 如何使阶乘更快?

java - 在不阅读完整文件的情况下估计文件的字数

generics - F# 使用类型变量调用内联函数

database - 磁盘性能上的持久性(纯功能性)红黑树

f# - 如何做Seq.takeWhile + F#中的一项

clojure - 如何让处理程序在重新框架中按顺序运行?

clojure - 列出 project.clj 中列出的依赖项的可用更新