[ create a new paste ] login | about

Link: http://codepad.org/NfRz1ewG    [ raw code | output | fork ]

Scheme, pasted on Mar 24:
;; named let
(define (my-reverse ls)
  (let loop ((l ls) (acc '()))
    (if (null? l)
        acc
        (loop (cdr l) (cons (car l) acc)))))
 
(display (my-reverse '(1 2 3 4 5)))
(newline)

;; do
(define (my-reverse ls)
  (do ((l ls (cdr l))
       (acc '() (cons (car l) acc)))
      ((null? l) acc)))

(display (my-reverse '(1 2 3 4 5)))
(newline)

(define (my-reverse ls)
  (do ((l ls (cdr l))
       (acc '() (cons (car l) acc)))
      ((null? l) acc)
    (for-each (lambda (x)
		(for-each display x)
		(newline)) `(("l => " ,l) ("acc => " ,acc)))))

(my-reverse '(1 2 3 4 5))


Output:
1
2
3
4
5
6
7
8
9
10
11
12
(5 4 3 2 1)
(5 4 3 2 1)
l => (1 2 3 4 5)
acc => ()
l => (2 3 4 5)
acc => (1)
l => (3 4 5)
acc => (2 1)
l => (4 5)
acc => (3 2 1)
l => (5)
acc => (4 3 2 1)


Create a new paste based on this one


Comments: