Преобразовать список строк в строку в DrRacket - PullRequest
0 голосов
/ 27 октября 2019

Как мне преобразовать список строк в строку в DrRacket? Например,

(список «c», «o», «k», «e») до «coke»

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

Попробуйте (list->string lst), если вы используете список символов.

Проверьте документы на list->string здесь

В противном случае, если у вас есть списокстрок, попробуйте рекурсивную функцию с string-append.

(define (lst_to_str lst)
  (cond
   [(empty? lst) ""]
   [else (string-append (first lst) (lst_to_str (rest lst)))]))
0 голосов
/ 27 октября 2019

Добавление второго ответа, чтобы проиллюстрировать несколько более абстрактных способов достижения этого.

Использование foldr было бы естественным способом абстрагироваться от рекурсивного решения, предоставленного в первом ответе .

> (foldr string-append "" (list "c" "o" "k" "e"))
"coke"

. Вы можететакже используйте apply, поскольку string-append может принимать произвольно много аргументов:

> (apply string-append (list "c" "o" "k" "e"))
"coke"

Если вы используете один из языков студента, вы можете использоватьУдобный implode:

> (implode (list "c" "o" "k" "e"))
"coke"
...