diff options
Diffstat (limited to 'coding-exercises/2/27.rkt')
| -rw-r--r-- | coding-exercises/2/27.rkt | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/coding-exercises/2/27.rkt b/coding-exercises/2/27.rkt new file mode 100644 index 0000000..b52f7b3 --- /dev/null +++ b/coding-exercises/2/27.rkt @@ -0,0 +1,28 @@ +#lang racket +(require sicp) + +(define (reverse l) + (define (iter l p) + (cond + ((null? l) p) + (else + (iter + (cdr l) + (cons (car l) p))))) + (iter l (list))) + +(define (deep-reverse nested-list) + (define (iter l p) + (cond + ((null? l) p) + ((pair? (car l)) + (iter (cdr l) + (cons (iter (car l) nil) + p))) + (else + (iter + (cdr l) + (cons (car l) p))))) + (iter nested-list nil)) + +(deep-reverse (list (list 1 2) (list 3 4))) |
