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

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

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

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

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

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

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

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

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

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