(defun vowel-p (char)
  (member char '(#\а #\е #\ё #\и #\о #\у #\ы #\э #\ю #\я
                 #\А #\Е #\Ё #\И #\О #\У #\Ы #\Э #\Ю #\Я) 
          :test #'char=))

(defun split-word (word)
  (labels ((split-chars (chars current syllables)
             (if (null chars)
                 (if current
                     (if syllables
                         (reverse (cons (concatenate 'string 
                                                    (car syllables)
                                                    (coerce (reverse current) 'string))
                                       (cdr syllables)))
                         (list (coerce (reverse current) 'string)))
                     (reverse syllables))
                 (let ((ch (car chars)))
                   (if (vowel-p ch)
                       (split-chars (cdr chars)
                                   nil
                                   (cons (coerce (reverse (cons ch current)) 'string)
                                        syllables))
                       (split-chars (cdr chars)
                                   (cons ch current)
                                   syllables))))))
    (split-chars (coerce word 'list) nil nil)))

(defun split-string (str)
  (labels ((split-chars (i current words)
             (if (>= i (length str))
                 (if current
                     (reverse (cons (coerce (reverse current) 'string) words))
                     (reverse words))
                 (let ((ch (char str i)))
                   (if (char= ch #\Space)
                       (if current
                           (split-chars (+ i 1)
                                       nil
                                       (cons (coerce (reverse current) 'string) words))
                           (split-chars (+ i 1) nil words))
                       (split-chars (+ i 1)
                                   (cons ch current)
                                   words))))))
    (split-chars 0 nil nil)))

(defun split-phrase (phrase)
  (mapcar #'split-word (split-string phrase)))

(print (split-phrase "функциональное программирование"))
(print (split-phrase "написать программу"))
(print (split-phrase "дана фраза на русском языке"))
(print (split-phrase " эвакуатор импровизация" ))
(print (split-phrase "коллекция чай" ))
(print (split-phrase "строка слово текст"))