好好學(xué)習(xí)scheme

以下內(nèi)容只是我的學(xué)習(xí)記錄筆記

很早之前看過《黑客與畫家》顷霹,對(duì)lisp心生向往翘盖,之后認(rèn)識(shí)的大神推薦《計(jì)算機(jī)程序的構(gòu)造與解釋》朦蕴,之前一段時(shí)間看了一點(diǎn),然后又中斷了侣夷。決定開始好好學(xué)習(xí)横朋,重新拿起那本已經(jīng)泛灰的老書。
首先你可能會(huì)問為什么要學(xué)lisp這一門古老的編程語言百拓?作為一名小白琴锭,顯然是沒辦法回答你這個(gè)問題的…看看王垠大神怎么說的吧,Lisp 已死衙传,Lisp 萬歲决帖!
首先你得配置下scheme相關(guān)的環(huán)境對(duì)吧,然后當(dāng)然我又扔給你一個(gè)鏈接蓖捶,還是王垠大神的地回,希望以后自己能夠早日修煉成神,不用到處扔別的大神的鏈接俊鱼,Scheme 編程環(huán)境的設(shè)置刻像。
如果你用的mac或者linux,應(yīng)該很快就把環(huán)境給配置好啦并闲,然后接下來的問題就是细睡,臥槽,emacs是什么東西帝火,作為一名程序員溜徙,你當(dāng)然聽過,(沒聽過的也假裝聽過犀填,反正現(xiàn)在聽過了)蠢壹,但是,問題來了九巡,你并不會(huì)用图贸,我也不會(huì),作為一個(gè)習(xí)慣各種ide編輯器或者vim黨的程序員,不會(huì)用emacs還是很正常的…默默的在心里默念求妹,自己怎么這么渣乏盐。
那就好好學(xué)吧佳窑,網(wǎng)上找找教程制恍,先學(xué)學(xué)基本的吧,比如說 Emacs入門系列:3分鐘學(xué)會(huì)Emacs基本操作神凑,說好的3分鐘净神,其實(shí)都是騙人的,不過拿來入門是不錯(cuò)的溉委,感覺寫的挺好的鹃唯。或者直接看emacs的tutorial瓣喊,隨便你吧坡慌。加一個(gè),發(fā)現(xiàn)一篇很不錯(cuò)的文章藻三, 一年成為Emacs高手(像神一樣使用編輯器)洪橘。
然后我先去好好學(xué)習(xí)一些emacs的基本操作吧,等我一天棵帽,然后繼續(xù)來閑聊熄求。
ps:我用的mac,emacs版本24.5.1

Day 1 Emacs 基本操作

設(shè)置終端下的meta鍵

iTerm2 的話在 "Preferences" -> "Profiles" -> "your Profile" -> "Keys" -> 界面的右下角有關(guān)于 left/right option key 的映射配置逗概,改成 +Esc 就可以了弟晚。
系統(tǒng)自帶終端的話類似。linux的話應(yīng)該沒有這類問題逾苫。

光標(biāo)移動(dòng)

光標(biāo)移動(dòng)先掌握以下12個(gè)吧卿城,其他的再說,之后有時(shí)間可以搞個(gè)圖便于理解
ctrl 相關(guān)(小范圍內(nèi)的移動(dòng))
ctrl+p: 上一行 (previous)
ctrl+n: 下一行 (next)
ctrl+b: 前一個(gè)字符 (backward)
ctrl+f: 后一個(gè)字符 (forward)
ctrl+a: 行首 (a是第一個(gè)字母)
ctrl+e: 行尾 (end)

meta相關(guān)(mac改過配置之后就是alt/option鍵)
M+b: 向前一個(gè)單詞
M+f: 向后一個(gè)單詞
M+{: 段首
M+}: 段位
M+<: 文檔首
M+>: 文檔尾

還是再加幾個(gè)吧
ctrl+v: 下移一屏
M+v: 上移一屏
M+g M+g:Emacs會(huì)要求輸入行號(hào)铅搓,移動(dòng)光標(biāo)到指定行

好了瑟押,現(xiàn)在你可以在字符間自由的游動(dòng)了!優(yōu)秀狸吞!

至于設(shè)置行號(hào)顯示勉耀,只要在~/.emacs里面加上
;;show line number (global-linum-mode 1)
如果不行的話,那么可能你的emacs版本太低蹋偏,自己解決吧你便斥,或者升級(jí)一下吧。

刪除

刪除還是很重要的對(duì)不威始,嗯嗯對(duì)枢纠,好,那來學(xué)點(diǎn)刪除的命令吧

ctrl+d: 刪除光標(biāo)所在處字符
backspace: 刪除光標(biāo)前一個(gè)字符(這個(gè)就是我們常用的刪除鍵啦)
M+d: 刪除單詞光標(biāo)之后的部分
M+backspace: 刪除單詞光標(biāo)之前的部分
ctrl+k: 刪除從光標(biāo)到行尾
M+k: 刪除從光標(biāo)到句尾

感覺刪除還是沒有vim用起來方便啊黎棠,或者學(xué)的太少不習(xí)慣…
比如假如要?jiǎng)h除到行首怎么辦晋渺?不像vim那樣d+0就可以镰绎,你得怎么做?
首先你得先學(xué)一下選中這個(gè)命令
ctrl+@: 選擇
然后再按ctrl+a跳到行首木西,然后
ctrl+w剪切
M+w復(fù)制
ctrl+y 粘貼

好了畴栖,今天就學(xué)這么多吧,休息休息八千,該干嘛干嘛去吧:)

感覺好像偏離正題了吗讶,我們是要學(xué)習(xí)scheme的!好吧恋捆,emacs的操作就不再介紹了照皆,大家自己慢慢折騰去吧,先把最簡單的掌握了就好沸停。
ctrl+x ctrl+c: 保存并退出
如果想不保存退出的話膜毁,直接kill吧,ctrl+z

下面開始正式的學(xué)習(xí)啦愤钾,我用的自學(xué)教材是《計(jì)算機(jī)程序的構(gòu)造和解釋》瘟滨,當(dāng)當(dāng)、亞馬遜之類的一搜就有绰垂,不要吝惜那幾十塊錢哈室奏,買買買!
然后渣渣們做題不會(huì)了怎么辦劲装,看看大神們的答案吧…

Day 2 程序設(shè)計(jì)的基本元素

  • 表達(dá)式
  • 組合的方法
  • 抽象的方法

前綴表達(dá)式的優(yōu)點(diǎn)

  • 不會(huì)出現(xiàn)歧義
  • 可以直接擴(kuò)充

環(huán)境所扮演的角色就是用去確定表達(dá)式中各個(gè)符號(hào)的意義胧沫。

定義的一般形式(define (<name> <formal parameters>) <body>)

過程應(yīng)用的代換模型

  • 應(yīng)用序:先求值參數(shù)后應(yīng)用(lisp采用:避免對(duì)表達(dá)式的重復(fù)求值)
  • 正則序:完全展開后歸約

來看一道題目:
ex1.5:
Ben Bitdiddle發(fā)明了一種檢測(cè)方法,能夠確定解釋器究竟采用的哪種序求值占业,是采用正則序绒怨,還是采用應(yīng)用序,他定義了下面兩個(gè)過程:

(define (p) (p))
(define (test x y)    
  (if (= x 0)         
    0         
    y))

而后他求值下列的表達(dá)式:
(test 0 (p))
假如是應(yīng)用序的話就會(huì)死循環(huán)谦疾,假如是正則序則很快算出結(jié)果0南蹂。

在數(shù)學(xué)里,人們通常關(guān)心的是說明性的描述(是什么)念恍,而在計(jì)算機(jī)科學(xué)里六剥,人們則通常關(guān)心行動(dòng)性的描述(怎么做)。

比如平方根的問題峰伙,以下是代碼疗疟,大家感受一下。

(define (sqrt x)
  (sqrt-iter 1.0 x))
(define (sqrt-iter guess x)
  (if (good-enough? guess x)
      guess
      (sqrt-iter (improve guess x) x)))
(define (good-enough? guess x)
  (< (abs (- guess x)) 0.001))
(define (improve guess x)
  (average guess x))
(define (average x y))
(define (abs x)
  (if (< x 0))
  -x
  x)

過程的形式參數(shù)名必須局部于有關(guān)的過程體瞳氓。

(待續(xù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末策彤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌店诗,老刑警劉巖裹刮,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異庞瘸,居然都是意外死亡捧弃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門恕洲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來塔橡,“玉大人,你說我怎么就攤上這事霜第。” “怎么了户辞?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵泌类,是天一觀的道長。 經(jīng)常有香客問我底燎,道長刃榨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任双仍,我火速辦了婚禮枢希,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朱沃。我一直安慰自己苞轿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布逗物。 她就那樣靜靜地躺著搬卒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翎卓。 梳的紋絲不亂的頭發(fā)上契邀,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音失暴,去河邊找鬼坯门。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逗扒,可吹牛的內(nèi)容都是我干的古戴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼缴阎,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼允瞧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤述暂,失蹤者是張志新(化名)和其女友劉穎痹升,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畦韭,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疼蛾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了艺配。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察郁。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖转唉,靈堂內(nèi)的尸體忽然破棺而出皮钠,到底是詐尸還是另有隱情,我是刑警寧澤赠法,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布麦轰,位于F島的核電站,受9級(jí)特大地震影響砖织,放射性物質(zhì)發(fā)生泄漏款侵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一侧纯、第九天 我趴在偏房一處隱蔽的房頂上張望新锈。 院中可真熱鬧,春花似錦眶熬、人聲如沸妹笆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晾浴。三九已至,卻和暖如春牍白,著一層夾襖步出監(jiān)牢的瞬間脊凰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工茂腥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狸涌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓最岗,卻偏偏與公主長得像帕胆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子般渡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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