序列(表)是由一個個序對組合而成的,具體來講就是讓每一個序對的car部分對應這個鏈的條目,cdr部分則是下一個序對。
對於1->2->3->4這個序列咱們能夠表示爲:app
(cons 1 (cons 2 (cons 3 (cons 4 null)))) 注:null表明表尾
爲了方便,上面的序列也能夠經過(list 1 2 3 4)
產生。code
返回表中第n項:it
(define (list-ref items n) (if (= n 0) (car items) (list-ref (cdr items) (- n 1))))
返回表長度:map
(define (length items) (if (null? items) 0 (+ 1 (length (cdr items)))))
或co
(define (length items) (define (length-iter items n) (if (null? items) n (length-iter (cdr items) (+ n 1)))) (length-iter items 0))
表的鏈接:
(define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2))))
表的反轉:
(define (reverse items) (if (null? items) null (append (reverse (cdr items)) (list (car items)))))
對錶的映射:
(define (map proc items) (if (null? items) null (cons (proc (car items)) (map proc (cdr items)))))