Lisp - 基本語法



LISP 中的基本構建塊

LISP 程式由三個基本構建塊組成:

  • 原子

  • 列表

  • 字串

原子是數字或連續字元的字串。它包括數字和特殊字元。

以下是某些有效原子的示例:

hello-from-tutorials-point
name
123008907
*hello*
Block#221
abc123

列表是由原子和/或其他列表組成的序列,括在括號中。

以下是某些有效列表的示例:

( i am a list)
(a ( a b c) d e fgh)
(father tom ( susan bill joe))
(sun mon tue wed thur fri sat)
( )

字串是用雙引號括起來的字元組。

以下是某些有效字串的示例:

" I am a string"
"a ba c d efg #$%^&!"
"Please enter the following details :"
"Hello from 'Tutorials Point'! "

添加註釋

分號符號 (;) 用於指示註釋行。

例如:

main.lisp

(write-line "Hello World") ; greet the world

; tell them your whereabouts

(write-line "I am at 'Tutorials Point'! Learning LISP")

輸出

單擊“執行”按鈕或鍵入 Ctrl+E 時,LISP 會立即執行它,並返回以下結果:

Hello World

I am at 'Tutorials Point'! Learning LISP

在進入下一部分之前的一些重要事項

以下是一些需要注意的重要事項:

  • LISP 中的基本算術運算子是 +、-、* 和 /

  • LISP 將函式呼叫 f(x) 表示為 (f x),例如 cos(45) 寫作 (cos 45)

  • LISP 表示式不區分大小寫,cos 45 或 COS 45 是相同的。

  • LISP 會嘗試評估所有內容,包括函式的引數。只有三種類型的元素是常量,並且始終返回它們自己的值

    • 數字

    • 字母 t,代表邏輯真。

    • nil,代表邏輯假,以及空列表。

關於 LISP 表示式的更多資訊

在上一章中,我們提到 LISP 程式碼的求值過程包含以下步驟。

  • 閱讀器將字元字串轉換為 LISP 物件或s-表示式。

  • 求值器定義 Lisp 表示式的語法,這些表示式由 s-表示式構成。此第二級求值定義了一個語法,用於確定哪些 s-表示式是 LISP 表示式。

現在,LISP 表示式可以是:

  • 原子

  • 空列表或非列表

  • 任何以符號作為其第一個元素的列表

求值器作為一個函式工作,它接受一個有效的 LISP 表示式作為引數並返回一個值。這就是我們將LISP 表示式放在括號中的原因,因為我們將整個表示式/形式作為引數傳送給求值器。

LISP 中的命名約定

名稱或符號可以包含任意數量的字母數字字元,但不能包含空格、開括號和閉括號、雙引號和單引號、反斜槓、逗號、冒號、分號和豎線。要在名稱中使用這些字元,需要使用跳脫字元 (\)。

名稱可以包含數字,但不能完全由數字組成,因為那樣它將被讀取為數字。類似地,名稱可以包含句點,但不能完全由句點組成。

單引號的使用

LISP 會評估所有內容,包括函式引數和列表成員。

有時,我們需要按字面意思取原子或列表,並且不希望將其評估或視為函式呼叫。

為此,我們需要在原子或列表前加上單引號。

以下示例演示了這一點。

建立一個名為 main.lisp 的檔案,並將以下程式碼輸入其中。

main.lisp

(write-line "single quote used, it inhibits evaluation")
(write '(* 2 3))
(write-line " ")
(write-line "single quote not used, so expression evaluated")
(write (* 2 3))

輸出

單擊“執行”按鈕或鍵入 Ctrl+E 時,LISP 會立即執行它,並返回以下結果:

single quote used, it inhibits evaluation
(* 2 3) 
single quote not used, so expression evaluated
6
廣告