LISP - 程序結構

LISP表達式稱爲符號表達式或S-表達式。s表達式是由三個有效對象,原子,列表和字符串。

任意的s-表達式是一個有效的程序。

Lisp程序在解釋器或編譯的代碼運行。

解釋器會檢查重複的循環,這也被稱爲讀 - 計算 - 打印循環(REPL)源代碼。它讀取程序代碼,計算,並打印由程序返回值。

一個簡單的程序

讓我們寫一個s-表達式找到的三個數字7,9和11的總和。要做到這一點,我們就可以輸入在提示符的解釋器 ->:

(+7911)

LISP返回結果:

27

如果想運行同一程序的編譯代碼,那麼創建一個名爲myprog的一個LISP源代碼文件。並在其中輸入如下代碼:

(write(+7911))

單擊Execute按鈕,或按下Ctrl+ E,LISP立即執行它,返回的結果是:

27

Lisp使用前綴表示法

可能已經注意到,使用LISP前綴符號。

在上面的程序中的+符號可以作爲對數的求和過程中的函數名。

在前綴表示法,運算符在自己操作數前寫。例如,表達式,

a * ( b + c ) / d

將被寫爲:

(/ (* a (+ b c) ) d)

讓我們再舉一個例子,讓我們寫的代碼轉換爲60o F華氏溫度到攝氏刻度:

此轉換的數學表達式爲:

(60 * 9 / 5) + 32

創建一個名爲main.lisp一個源代碼文件,並在其中輸入如下代碼:

(write(+ (* (/ 9 5) 60) 32))

當單擊Execute按鈕,或按下Ctrl+ E,MATLAB立即執行它,返回的結果是:

140

計算Lisp程序

計算LISP程序有兩部分:

  • 程序文本由一個讀取器程序轉換成Lisp對象

  • 語言的語義在這些對象中的條款執行求值程序

計算過程採用下面的步驟:

讀取器轉換字符到LISP對象或S-表達式的字符串。

求值器定義爲那些從s-表達式內置的Lisp語法形式。計算第二個級別定義的語法決定了S-表達式是LISP語言形式。

求值器可以作爲一個函數,它接受一個有效的LISP語言的形式作爲參數並返回一個值。這就是爲什麼我們把括號中的LISP語言表達,因爲我們要發送的整個表達式/形式向求值作爲參數的原因。

'Hello World' 程序

學習一門新的編程語言並沒有真正起飛,直到學會如何迎接語言的整個世界,對吧!

所以,創建一個名爲main.lisp新的源代碼文件,並在其中輸入如下代碼:

(write-line "Hello World") (write-line "I am at 'Tutorials Yiibai'! Learning LISP")

當單擊Execute按鈕,或按下Ctrl+ E,LISP立即執行它,返回的結果是:

Hello World I am at 'Tutorials Yiibai'! Learning LISP