Числовые и символьные атомы - Lisp
Формулировка задачи:
Здравствуйте, помогите решить задачу по функциональному программированию.
Необходимо определить, что является числовыми, а что символьными атомами в S-выражениях:
1 марта 2015 в МХМ им. Чехова пройдет спектакль «2 сестры»
В магазине 7 континент с 1.03.2015 действует скидка 35%
Спасибо за внимание.
Решение задачи: «Числовые и символьные атомы»
textual
Листинг программы
(defun type-sym (lst) (mapcar #'(lambda (x) (list x '- (cond ((numberp x) 'число) ((stringp x) 'строка) (t 'symbol)))) lst)) ==> type-sym (type-sym '(1 марта 2015 в МХМ им. Чехова пройдет спектакль "2 сестры")) ==> ((1 - число) (марта - symbol) (2015 - число) (в - symbol) (МХМ - symbol) (им. - symbol) (Чехова - symbol) (пройдет - symbol) (спектакль - symbol) ("2 сестры" - строка)) (type-sym '(В магазине 7 континент с 1.03.2015 действует скидка 35%)) ==> ((в - symbol) (магазине - symbol) (7 - число) (континент - symbol) (с - symbol) (1.03.2015 - symbol) (действует - symbol) (скидка - symbol) (35% - symbol))
Объяснение кода листинга программы
В данном коде определён функционал, который позволяет определить тип элемента списка.
Функция type-sym
принимает входной список lst
и возвращает список, в котором каждый элемент исходного списка помечен тегом, указывающим на его тип: число, строка или символ.
В данном случае, код выполняет следующие шаги:
- Определяет функцию
type-sym
. - В функции
type-sym
используется функцияmapcar
, которая применяет анонимную функцию (лямбда-функцию) к каждому элементу входного спискаlst
. - Анонимная функция проверяет тип элемента списка.
- Если элемент является числом, то возвращается список, в котором данный элемент помечен тегом 'число.
- Если элемент является строкой, то возвращается список, в котором данный элемент помечен тегом 'строка.
- Если элемент не является числом и не является строкой, то возвращается список, в котором данный элемент помечен тегом 'symbol.
- Возвращается результат применения
mapcar
к входному спискуlst
. Пример использования функцииtype-sym
со следующим входным списком: '(1 марта 2015 в МХМ им. Чехова пройдет спектакль2 сестры
)' показывает, что функция корректно определяет тип каждого элемента списка и возвращает список с правильными тегами. Пример использования функцииtype-sym
со следующим входным списком: '(В магазине 7 континент с 1.03.2015 действует скидка 35%))' также показывает, что функция корректно определяет тип каждого элемента списка и возвращает список с правильными тегами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д