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