(define squares (list 1 4 9 16 25))
(define (append list1 list2)
(if (null? list1)
list2
(cons (car list1) (append (cdr list1) list2))))
(define (reverse items)
(if (null? (cdr items))
items
(cons (reverse (cdr items)) (car items))))
(define (reverse items)
(define (reverse-iter i p)
(if (null? (cdr i))
(cons (car i) p)
(reverse-iter (cdr i) (cons (car i) p))))
(reverse-iter items null))
(define (reverse items)
(if (null? (cdr items))
items
(flattern (cons (reverse (cdr items)) (car items)))))
(define (flattern items)
(append (if (pair? (car items))
(flattern (car items))
(cons (car items) null))
(if (null? (cdr items))
null
(if (pair? (cdr items))
(flattern (cdr items))
(cons (cdr items) null)))))