Замена IF на COND - Lisp

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

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

Есть код, помогите заменить в нем IF на COND:
(defun F (Lst Obj1 Obj2)
 (if Lst
  (cons
   (if (equal (car Lst) Obj1) Obj2 (car Lst))
   (F (cdr Lst) Obj1 Obj2))))

Решение задачи: «Замена IF на COND»

textual
Листинг программы
(defun F (Lst Obj1 Obj2)
 (cond ((null Lst) nil)
       (t (cons (cond ((equalp (car Lst) Obj1) Obj2)
                      (t (car Lst)))
                (F (cdr Lst) Obj1 Obj2)))))

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

В данном коде определен функционал, который реализует рекурсивную функцию с тремя аргументами. При этом в условии cond проверяется, является ли список Lst пустым. Если это так, то возвращается nil. В противном случае, когда список не пуст, происходит рекурсивный вызов функции F с двумя аргументами: cdr Lst и Obj1, Obj2. В главной ветке cond проверяется, является ли первый элемент списка car Lst равным Obj1. Если это так, то возвращается Obj2. В противном случае, возвращается первый элемент списка car Lst. Список переменных:

  1. Lst - список, с которым работает функция
  2. Obj1 - первый объект для сравнения
  3. Obj2 - второй объект для сравнения Список значений переменных:
  4. Lst - список, содержащий элементы для обработки
  5. Obj1 - объект для сравнения
  6. Obj2 - объект для сравнения

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


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

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

15   голосов , оценка 4 из 5