(define (balanced-brackets string) (define (b chars sum) (cond ((< sum 0) #f) ((and (null? chars) (= 0 sum)) #t) ((null? chars) #f) ((char=? #\[ (car chars)) (b (cdr chars) (+ sum 1))) ((char=? #\] (car chars)) (b (cdr chars) (- sum 1))) (else (#f))) (b (string->list string) 0)) (balanced-brackets "") (balanced-brackets "[]") (balanced-brackets "[][]") (balanced-brackets "[[][]]") (balanced-brackets "][") (balanced-brackets "][][") (balanced-brackets "[]][[]")