-
高階函數(shù)查看全部
-
求值策略查看全部
-
函數(shù)格式查看全部
-
scala類(lèi)型查看全部
-
違反引用透明查看全部
-
XplusY_V1對(duì)x沒(méi)有副作用.查看全部
-
一、概念: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. 在計(jì)算機(jī)科學(xué)領(lǐng)域,函數(shù)式編程是一種編程范式,它是一種構(gòu)建計(jì)算機(jī)程序結(jié)構(gòu)的方法和風(fēng)格,它把程序當(dāng)做數(shù)學(xué)函數(shù)的求值過(guò)程并且避免了改變狀態(tài)和可變的數(shù)據(jù)。 二、函數(shù)式編程的重要概念: 2.1 純函數(shù)(Pure Function),或函數(shù)的純粹性(Purity),沒(méi)有副作用(Side Effect)。 副作用是狀態(tài)的變化(mutation):例子:修改全局變量,拋出異常,IO讀寫(xiě),調(diào)用有副作用的函數(shù)。 2.2 引用透明(Referential Transparency):對(duì)于相同的輸入,總是得到相同的輸出。 如果f(x)的參數(shù)x和函數(shù)體都是引用透明的,那么函數(shù)f是純函數(shù)。 2.3 不變性(Immutability)為了獲得引用透明性,任何值都不能變化。 2.4 函數(shù)是一等公民(First-class Function):一切都是計(jì)算,函數(shù)式編程中只有表達(dá)式,變量、函數(shù)都是表達(dá)式。 三、高階函數(shù)(Higher order Function) 閉包(Closure) 表達(dá)式求值策略:嚴(yán)格求值 和 非嚴(yán)格求值 Call By Value vs. Call By Name 惰性求值(Lazy Evaluation):定義表達(dá)式不會(huì)立即求值,用到后才會(huì)求值。 遞歸函數(shù),函數(shù)式編程沒(méi)有循環(huán),循環(huán)由遞歸實(shí)現(xiàn)。調(diào)優(yōu)遞歸:尾遞歸。 scala為什么會(huì)受推崇: 1.摩爾定律失效: 一個(gè)芯片上面的電子元器件的個(gè)數(shù)是有極限的 2.多核處理器: 進(jìn)入多核時(shí)代,編程模型發(fā)生改變,傳統(tǒng)的編程范式(java、c)會(huì)非常復(fù)雜,開(kāi)發(fā)成本大,容易出錯(cuò),質(zhì)量難以保證。函數(shù)式編程是最適用于并行編程。查看全部
-
副作用就是狀態(tài)的變化,如修改全局變量,拋出異常,io讀寫(xiě)等查看全部
-
補(bǔ)充閱讀材料:http://docs.scala-lang.org/overviews/collections/introduction.html查看全部
-
:paste用于編輯大段代碼 退出并保存用Ctrl+D 二個(gè)List合并用List++List查看全部
-
先加后減查看全部
-
在對(duì)一個(gè)MAP進(jìn)行加減元素后生成的都是一個(gè)新的MAP與原MAP沒(méi)有關(guān)系 p其實(shí)只有2個(gè)key,1與9,雖然沒(méi)有2但是減去2這個(gè)key也不報(bào)錯(cuò)查看全部
-
Map中就是包含若干個(gè)pair(元組)查看全部
-
Tuple元組 如果元組只有2個(gè)值,成為一個(gè)pari,一個(gè)對(duì) 定義一個(gè)元組t,取第一個(gè)元素的方式是t._1 元組的應(yīng)用:比如說(shuō)一個(gè)函數(shù)一般只返回一個(gè)值,使用元組封裝一下可以包含多個(gè)值查看全部
-
Strem是一個(gè)惰性求值的列表 對(duì)于一個(gè)值是確定的,對(duì)于其他暫時(shí)用不上的值是不求值的,只有在用到的時(shí)候才進(jìn)行求值查看全部
舉報(bào)
0/150
提交
取消