列表構造函式是用來構造列表的基本函式,在大多數 LISP 體系的計算機程式語言中,使用的函式名稱是cons。
cons構成了存放兩個變數與其指針的記憶體物件,這個物件被稱為(cons)單元、非原子的 S 表達式或(cons 對)。LISP 編程中表達要把 x 加入 y 的語法:(cons x y),構造了一個新物件。產生的結果具備了左半部,稱為car(第一元素或暫存器位址的內容);以及右半部稱為cdr(其餘元素或遞減暫存器的內容)。
基本介紹
- 中文名:列表構造函式
- 外文名:list constructor
- 套用領域:數學
使用
有序對
左右次序不能互換((1 2)跟(2 1)不同)。在 LISP 表示法中,(cons 1 2)結果會印出如下:
(1 . 2)
列表
(cons 42 (cons 69 (cons 613 nil)))
(list 42 69 613)
- 一個空列表(),通常被稱為nil的特殊物件。
- 一個cons單元,car代表這列表的第一個元素,而cdr則是包含其餘元素的一個子列表。
- CONS3 到nil空列表之上
- CONS2 到上一步的結果之上
- CONS1 到上一步的結果,產生最後的結果
(cons 1 (cons 2 (cons 3 nil)))
(list 1 2 3)
那么(cons 5 x)將產生列表:(5 1 2 3)。另一個有用的函式是append, 用於合併兩個列表。
Use in conversation
函式式實作
(define (cons x y) (lambda (m) (m x y)))(define (car z) (z (lambda (p q) p)))(define (cdr z) (z (lambda (p q) q)))