Эта проблема немного сложнее.Для начала вам нужно думать о входной строке как о списке символов.Каждый раз, когда встречается пробел, мы знаем, что новое слово завершено.
Мы можем отслеживать текущее слово в переменной и использовать аккумулятор для хранения целых слов, стараясь обратить вспять промежуточные значенияпотому что мы будем cons
их, чтобы они были наоборот.Вот что я имею в виду:
(define (split-string lst)
(let loop ((acc '()) (current '()) (chars (string->list lst)))
(cond ((null? chars)
(reverse (cons (list->string (reverse current)) acc)))
((char=? (car chars) #\space)
(loop (cons (list->string (reverse current)) acc)
'()
(cdr chars)))
(else
(loop acc
(cons (car chars) current)
(cdr chars))))))
Работает как положено:
(split-string "the man over there is close")
=> '("the" "man" "over" "there" "is" "close")