Вычисление определенных подсписков - Lisp

Узнай цену своей работы

Формулировка задачи:

надо написать функцию, которая обрабатывает список списков, так, что при этом вычисляются только те подсписки, которые начинаются с символа звездочки или плюса.

Решение задачи: «Вычисление определенных подсписков»

textual
Листинг программы
  1. (defun eval-select (w)
  2.   (loop for a in w collect
  3.         (if (and (listp a)
  4.                  (or (eq (car a) '*)
  5.                      (eq (car a) '+)))
  6.             (eval a)
  7.             a)))
  8.  
  9. > (eval-select '(1 (+ 2 3) (+) (* 4 5) (*) '(6 7 8)))
  10. (1 5 0 20 1 '(6 7 8))

Объяснение кода листинга программы

В коде определён функцией eval-select с одним аргументом w. С помощью цикла loop осуществляется обход каждого элемента a из w. Условие if проверяет, является ли элемент списком a. Если это так, то проверяется, является ли первый элемент списка a одним из двух элементов: * или +. Если это так, то выполняется вычисление списка a с помощью функции eval, и результат присваивается переменной a. В конце цикла loop результат вычисления списка a присваивается аргументу w. При вызове функции eval-select с аргументом '(1 (+ 2 3) (+) (* 4 5) (*) '(6 7 8))' будет выведено (1 5 0 20 1 '(6 7 8)).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы