original commit: 5dd46a3ae88b76f222635d5e92f18fc3ba981625
This commit is contained in:
Matthew Flatt 2002-01-13 19:34:49 +00:00
parent 54cd3da8a4
commit 6695ee87f5

View File

@ -251,18 +251,20 @@
(if print-vec-length? (if print-vec-length?
(lambda (v) (lambda (v)
(let ([len (vector-length v)]) (let ([len (vector-length v)])
(let ([last (vector-ref v (sub1 len))]) (if (zero? len)
(let loop ([i (- len 2)]) null
(if (i . < . 0) (let ([last (vector-ref v (sub1 len))])
(list last) (let loop ([i (- len 2)])
(let ([e (vector-ref v i)]) (if (i . < . 0)
(if (eq? e last) (list last)
(loop (sub1 i)) (let ([e (vector-ref v i)])
(let loop ([i (sub1 i)][r (list e last)]) (if (eq? e last)
(if (i . < . 0) (loop (sub1 i))
r (let loop ([i (sub1 i)][r (list e last)])
(loop (sub1 i) (cons (vector-ref v i) r))))))))))) (if (i . < . 0)
vector->list)) r
(loop (sub1 i) (cons (vector-ref v i) r))))))))))))
vector->list))
(define found-cycle (define found-cycle
(or print-graph? (or print-graph?
@ -279,10 +281,10 @@
[(vector? obj) [(vector? obj)
(let ([len (vector-length obj)]) (let ([len (vector-length obj)])
(let loop ([i 0]) (let loop ([i 0])
(if (if (= i len)
(= i len) #f
(or (vector-ref obj i) (or (vector-ref obj i)
(loop (add1 i))))))] (loop (add1 i))))))]
[(pair? obj) [(pair? obj)
(or (loop (car obj)) (or (loop (car obj))
(loop (cdr obj)))] (loop (cdr obj)))]
@ -309,12 +311,10 @@
(cond (cond
[(vector? obj) [(vector? obj)
(let ([len (vector-length obj)]) (let ([len (vector-length obj)])
(let loop ([i 0]) (let vloop ([i 0])
(if (unless (= i len)
(= i len) (loop (vector-ref obj i))
(begin (vloop (add1 i)))))]
(loop (vector-ref obj i))
(loop (add1 i))))))]
[(pair? obj) [(pair? obj)
(loop (car obj)) (loop (car obj))
(loop (cdr obj))] (loop (cdr obj))]