From 59e895be1901874419b0108d3006416ef01aa6e0 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 25 Mar 2015 22:24:29 -0400 Subject: [PATCH] Allow (list?) to work on circular lists --- trans.scm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/trans.scm b/trans.scm index e65316ee..5ac64f0e 100644 --- a/trans.scm +++ b/trans.scm @@ -84,12 +84,16 @@ end (func (car lst) (foldr func end (cdr lst))))) (define (not x) (if x #f #t)) - (define (list? obj) - (cond - ((null? obj) #t) - ((pair? obj) - (list? (cdr obj))) - (else #f))) + (define (list? o) + (define (_list? obj) + (cond + ((null? obj) #t) + ((pair? obj) + (_list? (cdr obj))) + (else #f))) + (if (Cyc-has-cycle? o) + #t + (_list? o))) (define (zero? n) (= n 0)) (define (positive? n) (> n 0)) (define (negative? n) (< n 0))