(define (main) (let ((input (read-line))) (display (count-tree input)) (newline))) (define (count-tree str) (let ((char-list (string->list str)) (count-char-lambdas (list (count-char #\t) (count-char #\r) (div2 (count-char #\e))))) (define (apply-lambdas lst arg) (if (equal? '() lst) lst (cons ((car lst) arg) (apply-lambdas (cdr lst) arg)))) (minimum (apply-lambdas count-char-lambdas char-list)))) (define (minimum lst) (define (iter lst holder) (if (null? lst) holder (if (< holder (car lst)) (iter (cdr lst) holder) (iter (cdr lst) (car lst))))) (iter (cdr lst) (car lst))) (define (div2 f) (lambda (x) (/ (f x) 2))) (define (count-char char) (lambda (x) (define (iter x i) (if (equal? x '()) i (if (equal? (car x) char) (iter (cdr x) (+ i 1)) (iter (cdr x) i)))) (iter x 0))) (main)