Lisp Прога удаляет первую букву каждого слова из предложения.
Формулировка задачи:
Создать прогу, которая удаляет первую букву каждого слова из предложения.
Решение задачи: «Lisp Прога удаляет первую букву каждого слова из предложения.»
textual
Листинг программы
;; racket-lang.org
(let ((foo (lambda (s)
(map string->list (string-split s))))
(bar (lambda (l)
(map list->string (map cdr l))))
(baz (lambda (s)
(string-join (remove* '("") s) " ")))
(str "this is a string"))
(baz (bar (foo str))))
;"his s tring"
Объяснение кода листинга программы
В данном коде на языке Lisp создаются три анонимные функции (lambda-функции) для работы со строками.
- Функция
fooпринимает строкуsи возвращает список слов, полученных после разделения строки по пробелам. Для этого используется функцияstring-split, которая разбивает строку на список строк, и функцияmap, которая применяет к каждому элементу списка функциюstring->list, превращая строку в список символов. - Функция
barпринимает список словlи возвращает список строк, полученных после удаления первого символа каждого слова. Для этого используется функцияmap, которая применяет к каждому элементу списка функциюlist->string, превращая список в строку, и функцияremove*, которая удаляет указанный символ (в данном случае первый символ каждого слова) из строки. - Функция
bazпринимает строкуsи возвращает строку, полученную после объединения всех слов строки в одну строку с добавлением пробела между словами. Для этого используется функцияstring-join, которая объединяет все элементы списка в одну строку с заданным разделителем (в данном случае пробелом). В конце кода создается строкаthis is a string, которая передается в функциюbaz, которая в свою очередь вызывает функциюbar, которая вызывает функциюfoo. Результатом работы программы будет строкаhis s tring.