(define (lay: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 (lay:string:trim s) (define (trim-head lst) (let loop ((lst lst)) (if (and (pair? lst) (char=? #\space (car lst))) (loop (cdr lst)) lst))) (list->string (reverse (trim-head (reverse (trim-head (string->list s)))))))