Вычислите значения следующих вызовов - Lisp
Формулировка задачи:
Вычислите значения следующих вызовов:
(apply 'list '(a b)) (funcall 'list '(a b)) (funcall 'apply 'list '(a b)) (funcall 'list 'apply '(a b)) (funcall 'funcall 'funcall 'list 'list '(a b))
Решение задачи: «Вычислите значения следующих вызовов»
textual
Листинг программы
(apply 'list '(a b)) ==> (a b) (funcall 'list '(a b)) ==> ((a b)) (funcall 'apply 'list '(a b)) ==> (a b) (funcall 'list 'apply '(a b)) ==> (APPLY (a b)) (funcall 'funcall 'funcall 'list 'list '(a b)) ==> (LIST (a b))
Объяснение кода листинга программы
В коде идет проверка работы трех функций: apply
, funcall
и list
.
apply
- принимает три аргумента: функцию, список аргументов и список функций. Функция принимает список аргументов и возвращает результат выполнения функции с этими аргументами. В данном случае передается функцияlist
и список(a b)
, поэтому результатом будет(a b)
.funcall
- принимает два аргумента: функцию и список аргументов. Функция принимает список аргументов и возвращает результат выполнения функции с этими аргументами. В данном случае передается функцияlist
и список(a b)
, поэтому результатом будет((a b))
.funcall
- принимает три аргумента: функцию, список аргументов и список функций. Функция принимает список аргументов и список функций и возвращает результат выполнения функции с этими аргументами. В данном случае передается функцияapply
и список(list (a b))
, поэтому результатом будет(a b)
.funcall
- принимает три аргумента: функцию, список аргументов и список функций. Функция принимает список аргументов и список функций и возвращает результат выполнения функции с этими аргументами. В данном случае передается функцияlist
и списокfuncall (list (a b))
, поэтому результатом будет(LIST (APPLY (a b)))
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д