Вычислите значения следующих вызовов - Lisp

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

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

Вычислите значения следующих вызовов:
Листинг программы
  1. (apply 'list '(a b))
  2. (funcall 'list '(a b))
  3. (funcall 'apply 'list '(a b))
  4. (funcall 'list 'apply '(a b))
  5. (funcall 'funcall 'funcall 'list 'list '(a b))

Решение задачи: «Вычислите значения следующих вызовов»

textual
Листинг программы
  1. (apply 'list '(a b))
  2.  
  3. ==> (a b)
  4.  
  5. (funcall 'list '(a b))
  6.  
  7. ==> ((a b))
  8.  
  9. (funcall 'apply 'list '(a b))
  10.  
  11. ==> (a b)
  12.  
  13. (funcall 'list 'apply '(a b))
  14.  
  15. ==> (APPLY (a b))
  16.  
  17. (funcall 'funcall 'funcall 'list 'list '(a b))
  18.  
  19. ==> (LIST (a b))

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

В коде идет проверка работы трех функций: apply, funcall и list.

  1. apply - принимает три аргумента: функцию, список аргументов и список функций. Функция принимает список аргументов и возвращает результат выполнения функции с этими аргументами. В данном случае передается функция list и список (a b), поэтому результатом будет (a b).
  2. funcall - принимает два аргумента: функцию и список аргументов. Функция принимает список аргументов и возвращает результат выполнения функции с этими аргументами. В данном случае передается функция list и список (a b), поэтому результатом будет ((a b)).
  3. funcall - принимает три аргумента: функцию, список аргументов и список функций. Функция принимает список аргументов и список функций и возвращает результат выполнения функции с этими аргументами. В данном случае передается функция apply и список (list (a b)), поэтому результатом будет (a b).
  4. funcall - принимает три аргумента: функцию, список аргументов и список функций. Функция принимает список аргументов и список функций и возвращает результат выполнения функции с этими аргументами. В данном случае передается функция list и список funcall (list (a b)), поэтому результатом будет (LIST (APPLY (a b))).

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


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

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

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

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

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

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