完整的common lisp的學習集合整理如下:
https://github.com/GreyZhang/g_lisp
繼續學習emacs,繼續學習lisp,繼續學習emacs lisp。
接觸lisp的時候,基本上上來就是從函數開始的。至少,我是這樣。其實倒也好理解,這個能夠更快讓我們看到效果。學習C語言的時候,不也是先使用printf輸入一個hello world嘛!
不過,在elisp中,還有一個專門控制順序結構的東西叫做progn。其實,這個東西我個人還是有印象的,我記得有一箇中文的elisp教程中是講過這個東西的。但是,出於我自己反覆強調了好幾遍的一個原因——我似乎對於lisp有一定的免疫力,學習總是不順暢,因此這個也只是有印象而已,沒有掌握。
今天,學習瞭解一下progn。首先,看文檔描述:
這裏,不僅僅有功能描述,還有一些歷史性變遷的描述。看起來,這是一個很古老的功能。這也解答了我一直存在的一個問題:這個東西的存在意義是什麼?爲什麼我不能再寫一個函數,執行這個函數把這個功能代替掉?就像我寫C代碼一樣。其實,這麼看,這個功能在一定程度上來說算是一個歷史痕跡。如果類比其他的編程語言,似乎很多時候我們壓根兒不在乎這個,畢竟代碼今本上都是從前往後逐漸執行的。
做一個測試:
前面小結過print,結合之前的信息,這裏就有點意思了。爲什麼,前面兩個print只出現了一行信息,而後面的卻出現了兩個呢?這也算是一個特殊之處,前面兩個只是進行求值,後面這個纔會作爲返回值。
以上是elisp的文檔描述。
完整的common lisp的學習集合整理如下: