Ошибка в маленькой функции-Lisp

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

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

Здравствуйте, недавно начала изучать Lisp. При вводе данных в функцию
Листинг программы
  1. (DEFUN proverka(X)
  2. (if ((SECOND X) EQUAL NIL ) (PRINC "Второй элемент NIL!") )
  3. )
вылазит ошибка Evaluate (SECOND X) and ignore the rest. Поясните, пожалуйста, почему так. Буду очень благодарна

Решение задачи: «Ошибка в маленькой функции-Lisp»

textual
Листинг программы
  1. (defn length-or-more (l n)
  2.     (defn go (l a) cond (null? l) a (> a n) (++ "более чем " n) (go (cdr l) (+ 1 a)))
  3.     (go l 0))
  4.  
  5. (def proverka (x) (print "список из " (length-or-more x 4) "элементов") x)

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

  1. Создаётся функция length-or-more, которая принимает два аргумента l и n.
  2. Внутри функции определена вложенная функция go, которая также принимает два аргумента l и a.
  3. Вложенная функция go проверяет условие null? l, если оно истинно, то возвращает значение переменной a.
  4. Если условие null? l ложно, то функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  5. Вложенная функция go также проверяет условие > a n, если оно истинно, то возвращает значение переменной a, к которой добавляется строка более чем и значение переменной n.
  6. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  7. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  8. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  9. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  10. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  11. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  12. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  13. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  14. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  15. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  16. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  17. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  18. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  19. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  20. Вложенная функция go рекурсивно вызывается с новыми аргументами (cdr l) и (+ 1 a).
  21. Функция length-or-more вызывает функцию go с аргументами l и 0.
  22. Значение переменной x передаётся в функцию print для вывода на экран.
  23. В консоль выводится строка список из и результат работы функции length-or-more с аргументами x и 4.
  24. Значение переменной x возвращается в качестве результата работы функции proverka.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы