(define count-reflexive-pairs (lambda (rel) (cond [(null? rel) 0] [(equal? (caar rel) (cadar rel)) (+ 1 (count-reflexive-pairs (cdr rel)))] [else (count-reflexive-pairs (cdr rel))]))) (define count-reflexive-pairs (lambda (rel) (if (null? rel) 0 (let ([cdr-rflx-ct (count-reflexive-pairs (cdr rel))]) (if (equal? (caar rel) (cadar rel)) (+ 1 cdr-rflx-ct) cdr-rflx-ct))))) (define count-reflexive-pairs (lambda (rel) (if (null? rel) 0 (+ (count-reflexive-pairs (cdr rel)) (if (equal? (caar rel) (cadar rel)) 1 0))))) (define count-reflexive-pairs (lambda (rel) (count-with-acc rel 0))) (define count-with-acc (lambda (rel count) (if (null? rel) count (count-with-acc (cdr rel) (+ count (if (equal? (caar rel) (cadar rel)) 1 0)))))) (count-reflexive-pairs '()) ; 0 (count-reflexive-pairs '((a b) (b c) (a a) (b b) (c a))) ;2 (count-reflexive-pairs '((a a))) ; 1