В ракетке, как мне объединить строки в списке, чтобы создать одно предложение - PullRequest
1 голос
/ 29 мая 2019

По сути, я хочу объединить строковые значения в списке. Например я хочу (Присоединиться (список «кошка» «есть» «голоден»)) выполнить («кошка голодна»)

(определить (присоединиться))

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Использование string-append*

См. https://docs.racket -lang.org / reference / strings.html? Q = string-append * #% 28def ._% 28% 28lib._racket% 2Fstring..rkt% 29._string -append% 2A% 29% 29

1 голос
/ 29 мая 2019

В 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"
...