Ошибка в маленькой функции-Lisp
Формулировка задачи:
Здравствуйте, недавно начала изучать Lisp.
При вводе данных в функцию
вылазит ошибка Evaluate (SECOND X) and ignore the rest.
Поясните, пожалуйста, почему так. Буду очень благодарна
(DEFUN proverka(X) (if ((SECOND X) EQUAL NIL ) (PRINC "Второй элемент NIL!") ) )
Решение задачи: «Ошибка в маленькой функции-Lisp»
textual
Листинг программы
(defn length-or-more (l n) (defn go (l a) cond (null? l) a (> a n) (++ "более чем " n) (go (cdr l) (+ 1 a))) (go l 0)) (def proverka (x) (print "список из " (length-or-more x 4) "элементов") x)
Объяснение кода листинга программы
- Создаётся функция
length-or-more, которая принимает два аргументаlиn. - Внутри функции определена вложенная функция
go, которая также принимает два аргументаlиa. - Вложенная функция
goпроверяет условиеnull? l, если оно истинно, то возвращает значение переменнойa. - Если условие
null? lложно, то функцияgoрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goтакже проверяет условие> a n, если оно истинно, то возвращает значение переменнойa, к которой добавляется строкаболее чеми значение переменнойn. - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Вложенная функция
goрекурсивно вызывается с новыми аргументами(cdr l)и(+ 1 a). - Функция
length-or-moreвызывает функциюgoс аргументамиlи0. - Значение переменной
xпередаётся в функциюprintдля вывода на экран. - В консоль выводится строка
список изи результат работы функцииlength-or-moreс аргументамиxи4. - Значение переменной
xвозвращается в качестве результата работы функцииproverka.