Подскажите пожалуйста что такое функциональное значение? - Lisp

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

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

Есть некая функция. Если одним из аргументов этой функции является другая функция, то это

функциональный аргумент

. Пример я нашел. Если функция возвращает в качестве результата другую функцию, то это

функциональное значение

. Не могли бы вы привести пример такой функции и подсказать для чего обычно требуется вообще возвращать функцию? Заранее благодарен.

Решение задачи: «Подскажите пожалуйста что такое функциональное значение?»

textual
Листинг программы
  1. ;; Построение списка функций, умножающих свой аргумент на n, n-1, n-2,...
  2. (defun mk-multer (n)
  3.   (if (zerop n) nil (cons (lambda (x) (* x n)) (mk-multer (- n 1)))))
  4.  
  5. ==> mk-multer
  6.  
  7. ;; Применяем к этому списку и списку целых обычный mapcar
  8.  
  9. (mapcar 'funcall (mk-multer 5) (range 3 7))
  10.  
  11. ==> (15 16 15 12 7)

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

В этом коде определенная функция mk-multer строит список функций, которые умножают свой аргумент на n, n-1, n-2, ..., где n - это аргумент функции mk-multer. Если n равно нулю, то возвращается nil. Функция mk-multer рекурсивно вызывает саму себя, уменьшая значение n на единицу, пока n не станет равным нулю. Когда n становится равным нулю, функция возвращает nil, завершая рекурсию. В каждой итерации рекурсии функция mk-multer добавляет новую функцию в список, которая умножает свой аргумент на текущее значение n. Затем, с помощью функции mapcar, этот список функций применяется к последовательности целых чисел от 3 до 7 (включительно), используя функцию funcall для вызова каждой функции в списке с соответствующим аргументом. Результатом выполнения кода будет список результатов вычисления каждой функции из списка, примененной к соответствующему числу из последовательности. В данном случае результатом будет (15 16 15 12 7).

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


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

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

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

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

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

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