Lisp 程式設計/Lisp 入門
外觀
Lisp 的語法非常簡單,易於理解。一個列表是一系列用圓括號括起來的原子,列表的第一個原子是一個函式。第一個原子之後的任何原子都是該函式的引數。一個示例 Lisp 表示式,用於將數字 1 和 2 相加,可能看起來像這樣
(+ 1 2)
如您所見,該表示式是一個列表。第一個原子是 +,它也是要計算的函式。1 和 2 是 + 函式的引數。
您還可以像這樣將列表用作函式的引數,它將數字 1 和 2 相加,但稍微花哨一些
(+ 1 (+ 1 1))
在這個例子中,+ 函式的第二個引數是一個列表。第一個原子是一個函式:+。所以內部列表被計算為 2(1+1=2),然後該結果被用作外部列表的第二個引數,然後給出結果 3。
當然,Lisp 中還有許多其他函式。一些最基本的函式是:+、-、/、*、quote、set 和 cons。+、-、* 和 / 函式的功能和工作原理應該很明顯。
quote 函式返回它的第一個引數,不進行求值。這對於將一個形式(表示式)傳遞給函式,而不首先計算該形式(表示式)非常有用。
(quote (param1 param2))
將返回
(param1 param2)
quote 也可以縮寫為 '。' 位於它作用於的列表的“外部”。所以
'(param1 param2)
將返回
(param1 param2)
就像第一個例子一樣。
cons 函式透過向列表新增專案來構建列表。向空列表 '() 新增專案會建立一個新列表。
(cons 1 '())
返回
(1)
(cons 1 (cons 2 (cons 3 '())))
返回
(1 2 3)
Lisp 的許多屬性都源於列表是由 cons 構建的事實。
在 Lisp 中,有幾種方法可以設定變數。以下是最常見的幾種方法。
Setq 將變數設定為給定值。如果變數不存在,則建立它。所有使用 setq 建立的變數都是全域性變數。Setq 的工作方式如下
(setq variable-name <value>)
使用 setq 的示例程式碼段如下
(setq camel "I am a camel!") (print camel)
它應該在執行時列印“我是一隻駱駝!”。