(define (length lst) (let ((counter (let ((count 0)) (lambda (m) (if (eq? m 'count) count (begin (set! count (+ count 1)) #t)))))) (for-each counter lst) (counter 'count)))