;; The "split" function splits a string to a list of words. (defun rsplit (list &optional (splitted ()) (cur ())) (if (null list) (if cur (cons cur splitted) splitted) (let ((ch (car list))) (if (alpha-char-p ch) (rsplit (cdr list) splitted (cons ch cur)) (if cur (rsplit (cdr list) (cons cur splitted)) (rsplit (cdr list) splitted)))))) (defun split (s) (mapcar #'(lambda (x) (map 'string #'char-downcase x)) (rsplit (nreverse (coerce s 'list)))))