夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远。
夫学须静也,才须学也,非学无以广才,非志无以成学。淫慢则不能励精,险躁则不能冶性。
年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及。
——诸葛亮《诫子书》
于文章中出现的任何错误请大家批评指出,一定及时修改
有任何想要讨论和学习的问题可联系我:yangmq@aliyun.com
Scala基础学习-函数式编程思想
Scalable编程语言
面向对象语言
函数式语言
无缝的java互操作
一、函数式编程思想的重要概念
-
纯函数(Pure Function)
-
函数的纯粹性(purity)
-
没有副作用(Side Effect)
副作用是状态的变化(mutation) -
应用透明(Referential Transparency)
对于相同的输入,总是得到相同的输出
如果f(x)的参数x和函数体都是引用透明的,那么函数f是纯函数 -
不变性(Immutability)
为了获得应用透明性,任何值都不能变化 -
函数是一等公民(First-class Function)
一切都是计算,函数式编程中只有表达式,变量、函数都是表达式
表达式求值策略:严格求值 和 非严格求值 (Call By Value vs Call By Name)
惰性求值(Lazy Evaluation) -
高阶函数(Higher order Function)
-
闭包(Closure)
-
递归函数(Recursive Function)
递归实现循环 -
尾递归(Tail Recursion)
二、函数式编程的优点
-
生产效率高
同样功能的程序,Lisp代码的长度可能是C代码的七分之一到十分之一 -
易于推理(Reasoning)
-
并行编程
-
多核计算、云计算