記不清從哪裡看到的資訊說lisp簡單,讓我有想法開始學習lisp。我随便找了一個看着評價不錯的教程《實用common lisp程式設計》,感覺這個一點都不簡單,上手挺難的。教程中,存在大量沒有解釋過就使用的東西。這讓我的學習有點零碎,不夠系統。我把我自己學習的所有的記錄整理了一下,算是組合成了一個集合。整理的資訊連結如下;
https://github.com/GreyZhang/g_lisp
今天,小結一下common lisp的變量定義。能力有限,暫時把我能夠看懂的部分整理出來。或許,就這一個簡單的概念就得花費掉很多時間來做整理總結。
類比C語言,這個可以認為是全局量。需要知道兩個宏,分别是defvar和defparameter。接下來,看看兩個定義變量的方法以及差異。
首先看defparameter,這樣可以友善對比出defvar的差異。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CNzQGZ2EDO3IzMxkzY4gjNlBjZmJmM0YWMhZzM5MzYi9CXyIzLcZDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL4M3Lc9CX6MHc0RHaiojIsJye.png)
标準格式中,可以最後面加一個字元串作為文檔性資訊,這個文檔性的資訊是可以省略的。Var5的定義可以看出defparameter與defvar的差異,後面的例子中可以看出這個defparameter不支援的操作defvar是可以支援的。
從上面的例子可以看出,雖然defparameter不支援的未綁定狀态defvar支援。但是,在綁定資料之前不能夠進行引用通路。但是,可以對這個量進行指派綁定後進行通路。到此為止,動态變量其實還沒有結束,還有一個let操作與之有一些小糾纏類的應用方式。其實,我覺得看教材的時候看得有點蒙圈,如果學習過C語言隻需要提一個簡單的概念類比就能夠從某些角度更加了解這個用法。這個概念就是檔案級别的靜态變量。接下來,看看這個小糾纏的應用方式: