Первая лабораторная по ЛИСП - Lisp

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

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

Здравствуйте, в институте прохожу предмет ЛИСП (Common Lisp), но никак не могу в него въехать...настолько он ломает мозг после С++ и др. С первой же лабораторной работой начались проблемы. Вот задание: Описать функцию f (x y z) от трёх аргументов, которая формирует из своих аргументов список и выполняет его обработку. Проверить, является ли первый элемент списка строкой или символом. Если является, то вернуть исходный список без первого элемента, иначе поменять местами первый и второй элементы исходного списка. Вопрос, как можно проверить, если такой функции(проверка на строку или символ) нет (есть АТОМ, на NIL), или я что то не понимаю? Кто нить может написать такую функцию проверки? Заранее спасибо...!

Решение задачи: «Первая лабораторная по ЛИСП»

textual
Листинг программы
(defun list&process (a b c)
  (if (or (stringp a) (symbolp a))
      (cons b (cons c nil))
      (cons b (cons a (cons c nil)))))
 
> (list&process "a" 2 3)
(2 3)
> (list&process 1 2 3)
(2 1 3)

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

В данном коде определён функцией list&process с тремя аргументами a, b, c. Если a — строка или символ, то возвращается nil и вторая и третья аргументы объединяются в список. Если a — не строка и не символ, то возвращается nil и вторая и третья аргументы добавляются в начало списка, который образуется из первых двух аргументов. Значит, вызов list&processa2 3 вернёт (2 3), а вызов list&process 1 2 3 вернёт (2 1 3).

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


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

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

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