1.3 Formulating Abstractions with Higher Order Procedures 筆記

lambda 表達(dá)式

lambda 表達(dá)式與 define 作用類似疟暖,可以將表達(dá)式抽象為程式,不過無法命名,結(jié)構(gòu)體如下

(lambda (<formal-parameters>) <body>)

lambda 表達(dá)式同樣可以作為表達(dá)式的操作符使用,如下:

((lambda (x y z) (+ x y (sqaure z)))
   1 2 3)

let 表達(dá)式

let 用于定義局部變量勤婚,結(jié)構(gòu)體如下:

(let ((<var1> <exp1>)
      (<var2> <exp2>)
      ...
      (<varn> <expn>))
  <body>)

其實(shí) let 并不是一種表達(dá)式的特殊形式,而是基于 lambda 的語法糖涤伐,let 表達(dá)式的結(jié)構(gòu)體轉(zhuǎn)換為 lambda 形式如下:

((lambda (<var1> <var2> ... <varn>) 
   <body>)
  <exp1>
  <exp2>
  ...
  <expn>)

let 定義的局部變量作用域?yàn)?let 表達(dá)式體中馒胆,于是衍生出下列兩條規(guī)則:

  • let 僅允許被綁定的變量在此 let 表達(dá)式體中應(yīng)用。例如凝果,假設(shè)下列表達(dá)式中的 x 值為 5祝迂,整個(gè)表達(dá)式的結(jié)果為 38。因?yàn)樵?let 體中應(yīng)用的 x 值為 3豆村,所以 let 表達(dá)式的結(jié)果為 33液兽,而 let 表達(dá)式外部的 x 依然是 5骂删,所以整個(gè)表達(dá)式的結(jié)果為 38掌动。
(+ (let ((x 3))
     (+ x (* x 10)))
   x)
  • let 中局部變量值的計(jì)算依靠 let 外部的變量。也就是說宁玫,let 中存在與表達(dá)式外部同名的變量粗恢,在計(jì)算 let 中局部變量結(jié)果時(shí)使用的依然是外部變量。例如欧瘪,假設(shè)下列表達(dá)式中 x 的值是 2眷射,整個(gè)表達(dá)式的結(jié)果為 12。因?yàn)?let 表達(dá)式中 x 值為 3佛掖,y 的值為 4(計(jì)算 y 時(shí)使用的 x 值為 let 外部的 x 值 2)妖碉。
(let ((x 3)
      (y (+ x 2)))
  (* x y))

高階程式

高階程式是指維護(hù)通過參數(shù)傳入的程式或返回結(jié)果為程式的程式,這種程式能夠進(jìn)行更高級(jí)別的抽象芥被,為編程語言提供強(qiáng)大的表達(dá)能力欧宜。

通常編程語言的第一公民擁有以下權(quán)限:

  • 能夠命名為變量
  • 可以作為參數(shù)傳遞給程式
  • 可以作為程式的結(jié)果返回
  • 能夠被包含在數(shù)據(jù)結(jié)構(gòu)中

加上高階程式的表述,在 Lisp 中程式便是它的第一公民拴魄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冗茸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匹中,更是在濱河造成了極大的恐慌夏漱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顶捷,死亡現(xiàn)場(chǎng)離奇詭異挂绰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)服赎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門葵蒂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芳室,“玉大人,你說我怎么就攤上這事刹勃】昂睿” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵荔仁,是天一觀的道長伍宦。 經(jīng)常有香客問我,道長乏梁,這世上最難降的妖魔是什么次洼? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮遇骑,結(jié)果婚禮上卖毁,老公的妹妹穿的比我還像新娘。我一直安慰自己落萎,他們只是感情好亥啦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著练链,像睡著了一般翔脱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上媒鼓,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天届吁,我揣著相機(jī)與錄音,去河邊找鬼绿鸣。 笑死疚沐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潮模。 我是一名探鬼主播亮蛔,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼再登!你這毒婦竟也來了尔邓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤锉矢,失蹤者是張志新(化名)和其女友劉穎梯嗽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沽损,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灯节,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炎疆。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卡骂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出形入,到底是詐尸還是另有隱情全跨,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布亿遂,位于F島的核電站浓若,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛇数。R本人自食惡果不足惜挪钓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耳舅。 院中可真熱鬧碌上,春花似錦、人聲如沸浦徊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辑畦。三九已至吗蚌,卻和暖如春腿倚,著一層夾襖步出監(jiān)牢的瞬間纯出,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工敷燎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暂筝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓硬贯,卻偏偏與公主長得像焕襟,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饭豹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • JavaScript鸵赖,通常縮寫為 JS拄衰,是一種解釋執(zhí)行的編程語言它褪。它是現(xiàn)在最流行的腳本語言之一。 JavaScri...
    神齊閱讀 4,898評(píng)論 1 32
  • 本章的目的是讓你盡快開始編程翘悉。本章結(jié)束時(shí)茫打,你會(huì)掌握足夠多的 Common Lisp 知識(shí)來開始寫程序。 2.1 形...
    四月不見閱讀 1,140評(píng)論 2 5
  • 一、Kotlin基礎(chǔ) 1.1 變量 在Kotlin中變量分為可變引用var和不可變引用val老赤,val對(duì)應(yīng)的是jav...
    東方未曦閱讀 450評(píng)論 0 1
  • 目錄: Hello轮洋,world A Simple Database 語法和語義(待補(bǔ)充) 函數(shù)(Functions...
    ayusong870閱讀 951評(píng)論 0 1
  • 函數(shù)是組織好的、可重復(fù)使用的抬旺,用來實(shí)現(xiàn)單一或相關(guān)聯(lián)功能的代碼段弊予。函數(shù)能夠提高應(yīng)用的模塊性和代碼的重復(fù)利用率。Pyt...
    瀧汰泱閱讀 297評(píng)論 0 0