В Racket есть процедура только для этого, она называется string-join
:
(string-join '("cat" "is" "hungry"))
=> "cat is hungry"
Вот еще одна альтернатива, использующая string-append
.Это менее эффективно, но избегает необходимости кодировать явную рекурсию:
(define (join lst)
(foldl (lambda (s acc) (string-append acc " " s))
(first lst)
(rest lst)))
(join '("cat" "is" "hungry"))
=> "cat is hungry"