Почему не работает? - Lisp (229422)

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

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

От скуки захотелось написать функцию, которая бы изменяла(map) список последовательно с помощью данных функций.
(defun map-list-with (lst func &rest other-funcs)
  (if (not (null other-funcs))
    (map-this-with (mapcar func lst) (car other-funcs)  (cdr other-funcs))
    (mapcar func lst)))
 
* (map-list-with '(1 2 3 4 5) #'1+)
 
(2 3 4 5 6)
 
* (map-list-with '(1 2 3 4 5) #'1+ #'1+)
;; had to be (3 4 5 6 7)
debugger invoked on a UNDEFINED-FUNCTION in thread
#<THREAD "main thread" RUNNING {10029A49E3}>:
  The function COMMON-LISP:NIL is undefined.
 
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
 
restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-KERNEL:%COERCE-CALLABLE-TO-FUN NIL)
0] 0

Решение задачи: «Почему не работает?»

textual
Листинг программы
(map (compose 1+ 10*) '(1 2 3))

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

Код представлен в виде списка с однородными элементами, где каждый элемент - это ассоциация с двумя элементами: название переменной и ее значение.

  1. (map (compose 1+ 10*) '(1 2 3))
  2. compose - это функция высшего порядка, которая принимает функцию и аргументы этой функции и возвращает результат выполнения функции с аргументами.
  3. 1+ - это функция, которая принимает одно число и возвращает результат увеличения этого числа на 1.
  4. '(1 2 3)' - это строка, которая содержит список чисел.
  5. map - это функция, которая принимает функцию и список аргументов, и возвращает новый список, где каждый элемент - это результат выполнения функции с соответствующим аргументом.
  6. 10* - это функция, которая принимает одно число и возвращает это число, умноженное на 10.
  7. Результатом выполнения кода будет новый список, где каждое число из исходного списка будет увеличено на 1 и затем умножено на 10.
  8. Если вы видите ошибку в коде, возможно, она связана с неправильным использованием функций или неправильной постановкой задачи.

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы