Первая лабораторная по ЛИСП - 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&process
a2 3
вернёт (2 3)
, а вызов list&process 1 2 3
вернёт (2 1 3)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д