(define (string-downcase s) (let* ((l (string-length s)) (r (make-string l))) (let loop ((i 0)) (if (eq? i l) r (begin (string-set! r i (char-downcase (string-ref s i))) (loop (add1 i))))))) (define (string-trim-head lst) (let loop ((lst lst)) (if (and (pair? lst) (char=? #\space (car lst))) (loop (cdr lst)) lst))) (define (string-trim s) (list->string (reverse (string-trim-head (reverse (string-trim-head (string->list s)))))))