-
高阶函数查看全部
-
求值策略查看全部
-
函数格式查看全部
-
scala类型查看全部
-
违反引用透明查看全部
-
XplusY_V1对x没有副作用.查看全部
-
一、概念:In computer science,functional programming is a programming paradigm--a style of building the structure and elements of computer programs--that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. 在计算机科学领域,函数式编程是一种编程范式,它是一种构建计算机程序结构的方法和风格,它把程序当做数学函数的求值过程并且避免了改变状态和可变的数据。 二、函数式编程的重要概念: 2.1 纯函数(Pure Function),或函数的纯粹性(Purity),没有副作用(Side Effect)。 副作用是状态的变化(mutation):例子:修改全局变量,抛出异常,IO读写,调用有副作用的函数。 2.2 引用透明(Referential Transparency):对于相同的输入,总是得到相同的输出。 如果f(x)的参数x和函数体都是引用透明的,那么函数f是纯函数。 2.3 不变性(Immutability)为了获得引用透明性,任何值都不能变化。 2.4 函数是一等公民(First-class Function):一切都是计算,函数式编程中只有表达式,变量、函数都是表达式。 三、高阶函数(Higher order Function) 闭包(Closure) 表达式求值策略:严格求值 和 非严格求值 Call By Value vs. Call By Name 惰性求值(Lazy Evaluation):定义表达式不会立即求值,用到后才会求值。 递归函数,函数式编程没有循环,循环由递归实现。调优递归:尾递归。 scala为什么会受推崇: 1.摩尔定律失效: 一个芯片上面的电子元器件的个数是有极限的 2.多核处理器: 进入多核时代,编程模型发生改变,传统的编程范式(java、c)会非常复杂,开发成本大,容易出错,质量难以保证。函数式编程是最适用于并行编程。查看全部
-
副作用就是状态的变化,如修改全局变量,抛出异常,io读写等查看全部
-
补充阅读材料:http://docs.scala-lang.org/overviews/collections/introduction.html查看全部
-
:paste用于编辑大段代码 退出并保存用Ctrl+D 二个List合并用List++List查看全部
-
先加后减查看全部
-
在对一个MAP进行加减元素后生成的都是一个新的MAP与原MAP没有关系 p其实只有2个key,1与9,虽然没有2但是减去2这个key也不报错查看全部
-
Map中就是包含若干个pair(元组)查看全部
-
Tuple元组 如果元组只有2个值,成为一个pari,一个对 定义一个元组t,取第一个元素的方式是t._1 元组的应用:比如说一个函数一般只返回一个值,使用元组封装一下可以包含多个值查看全部
-
Strem是一个惰性求值的列表 对于一个值是确定的,对于其他暂时用不上的值是不求值的,只有在用到的时候才进行求值查看全部
举报
0/150
提交
取消