%EXPAND-FORM: (EQL N 0) should be a lambda expression - Lisp
Формулировка задачи:
http://ideone.com/PsVwBi
подскажите: в чем пробдлема? Заранее благодарен.
Решение задачи: «%EXPAND-FORM: (EQL N 0) should be a lambda expression»
textual
Листинг программы
(defun [] (l n) (cond ((eql n 0) (car l)) (t ([] (cdr l) (- n 1))) )) ==> [] ([] '(q w e r) 3) ==> r
Объяснение кода листинга программы
В данном коде определён пользовательский функтор с именем EQL. Он принимает два аргумента — l и n. Если n равно 0, то возвращается первый элемент списка l. В противном случае, из списка l удаляется элемент с индексом n (считая с 0), и возвращается получившийся список.
Код можно представить в виде списка, где каждому элементу списка соответствует номер, а сам элемент — это пара название переменной: значение
.
- (defun [] (l n) ...)
- (cond ((eql n 0) (car l))
- (t ([] (cdr l) (- n 1)))
- [...]
- ([] '(q w e r) 3)
- ...
- ==> r Название переменной: l Значение: список с элементами '(q w e r) Название переменной: n Значение: 3 Название переменной: l Значение: список с элементами '(w e r) Название переменной: n Значение: 2 Название переменной: l Значение: список с элементами '(e r) Название переменной: n Значение: 1 Название переменной: l Значение: список с элементами '(r) Название переменной: n Значение: 0 Название переменной: l Значение: первый элемент списка '(r) Название переменной: n Значение: -1 Название переменной: l Значение: пустой список
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д