sequences¶
; List (define mylist (list 1 2 3 4)) (car mylist) ;Value: 1 (cdr mylist) ;Value 2: (2 3 4) (cadr mylist) ;Value: 2 ; Implementation of `list-ref` (define (list-ref items n) (if (= n 0) (car items) (list-ref (cdr items) (- n 1)))) (define squares (list 1 4 9 16 25)) (list-ref squares 3) ;Value: 16 ; Length of a list (define (length items) (if (null? items) 0 (+ 1 (length (cdr items))))) (define odds (list 1 3 5 7)) (length odds) ;Value: 4 ; Iterative length (define (length items) (define (iter a count) (if (null? a) count (iter (cdr a) (+ 1 count)))) (iter items 0)) (define evens (list 2 4 6 8)) (length evens) ;Value: 4 ; Append procedure (define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2)))) (append odds evens) ;(1 3 5 7 2 4 6 8)