Exercise 2.18.  Define a procedure reverse that takes a list as argument and returns a list of the same elements in reverse order:

(reverse (list 1 4 9 16 25))
(25 16 9 4 1)

 


(define nil '())
(define (append list1 list2)
(if (null? list1)
list2
(cons (car list1) (append (cdr list1) list2))))
(define (reverse list1)
(if
(null? list1)
nil
(if
(null? (cdr list1))
list1
(append
(reverse (cdr list1))
(cons (car list1) nil)))))
(reverse (list 1 2))
(reverse (list 1 2 3 4 5))
(reverse (list 1))
(reverse ())
(reverse '())

view raw

s218.scm

hosted with ❤ by GitHub

 

Discover more from Gaurav Sharma's Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading