数学中的函数
在数学中,函数是没有副作用的。比如说正弦函数y=sin(x)。不管函数怎么工作,结果都会返回给变量y。在函数内部,没有改变任何的全局状态。这种对全局的状态没有改变的函数我们成之为:没有副作用的函数,或纯函数。
In computer science, a function or expression is said to have a side effect if, in addition to
producing a value, it also modifies some state or has an observable interaction with calling
functions or the outside world.
(按:我理解的副作用就是,函数的一些行为破坏了函数的独立性,导致函数对上下文产生了影响。)
这种特性极大的简化了分析,测试以及调试。你可以在对函数执行的上下文一无所知的情况下做这些事情,除非你调用了其他的函数。这种对上下文的忽视被称为引用透明性
引用透明性是指:一个表达式可以和他的值相互替换,对程序是没有改变的。
Referential transparency (引用透明性) means that an expression (such as a function call) can be replaced with its value.
在函数编程中,你可以把几个函数组合起来形成另一个函数:
这表明函数可以被看做是值。换句话说,函数是一级的,就如同数据一样。你可以把函数指派给变量,也可以当做参数传递给其他的函数,同时也能够将函数作为返回值用在return语句中。在函数编程规范中,函数如同基础类型,是一种编程基础的构件块,如同整数和字符串。
一个函数把另一个函数当做参数,并返回一个函数,这种函数我们称之为高阶函数。在数学中微积分中的两个例子是微分和积分(按:关于微积分,我已经全部还给老师了,自己这里大概仅仅有一些概念。希望大家别和我一样)。
函数定义: