Blame


1 665c255d 2023-08-04 jrmu (define (cycle? x)
2 665c255d 2023-08-04 jrmu (let ((aux '()))
3 665c255d 2023-08-04 jrmu (define (find-cycle z)
4 665c255d 2023-08-04 jrmu (cond ((null? z) false)
5 665c255d 2023-08-04 jrmu ((memq z aux) true)
6 665c255d 2023-08-04 jrmu (else
7 665c255d 2023-08-04 jrmu (set-cdr! (last-pair aux) (list z))
8 665c255d 2023-08-04 jrmu (find-cycle (cdr z)))))
9 665c255d 2023-08-04 jrmu (if (not (pair? x))
10 665c255d 2023-08-04 jrmu (error "argument of cycle? must be a pair."))
11 665c255d 2023-08-04 jrmu (set! aux (list x))
12 665c255d 2023-08-04 jrmu (find-cycle (cdr x))))