
- LISP 教程
- LISP - 首頁
- LISP - 概述
- LISP - 環境
- LISP - 程式結構
- LISP - 基本語法
- LISP - 資料型別
- LISP - 宏
- LISP - 變數
- LISP - 常量
- LISP - 運算子
- LISP - 決策
- LISP - 迴圈
- LISP - 函式
- LISP - 謂詞
- LISP - 數字
- LISP - 字元
- LISP - 陣列
- LISP - 字串
- LISP - 序列
- LISP - 列表
- LISP - 符號
- LISP - 向量
- LISP - 集合
- LISP - 樹
- LISP - 雜湊表
- LISP - 輸入與輸出
- LISP - 檔案I/O
- LISP - 結構體
- LISP - 包
- LISP - 錯誤處理
- LISP - CLOS (Common Lisp Object System)
- LISP 有用資源
- Lisp - 快速指南
- Lisp - 有用資源
- Lisp - 討論
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