From c1988959e3c431d181e41117dc712b33e312a0f8 Mon Sep 17 00:00:00 2001 From: Oliver Payne Date: Tue, 3 May 2022 22:18:22 +0100 Subject: [PATCH] Complete exercise 3.18 --- 3_16.rkt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/3_16.rkt b/3_16.rkt index 5f16823..b810615 100644 --- a/3_16.rkt +++ b/3_16.rkt @@ -28,6 +28,16 @@ 1)))) (count l '())) +(define (has-cycle? l) + (define (cycle-iter l seen-pairs) + (cond ((not (pair? l)) #f) + ((memq (cdr l) seen-pairs) #t) + (else + (cycle-iter (cdr l) + (cons l seen-pairs))))) + (cycle-iter l '())) + + ;; Both give 3 (define l1 '(a b c))