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