序列(表)是由一个个序对组合而成的,具体来讲就是让每一个序对的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)))))