--- title: SICP exercise 3.19 date: 2021-09-02 layout: post lang: en ref: sicp-exercise-3-19 --- ```scheme (define (cycle? l) (define (rec l x) (cond ((null? x) false) ((eq? l x) true) (true (rec l (cdr x))))) (rec l (cdr l))) ``` Sample interactive session: ```scheme scheme@(guile-user)> (define true #t) scheme@(guile-user)> (define false #f) scheme@(guile-user)> (define (cycle? l) (define (rec l x) (cond ((null? x) false) ((eq? l x) true) (true (rec l (cdr x))))) (rec l (cdr l))) scheme@(guile-user)> (cycle? '(1 2 3)) $9 = #f scheme@(guile-user)> (cycle? (make-cycle '(1 2 3))) $10 = #t ```