Лямбда выражение - Lisp
Формулировка задачи:
setq x '(1 2 3 4) x ((lambda (x) (rplaca x '6)) x) x
Решение задачи: «Лямбда выражение»
textual
Листинг программы
(rplaca x '6) ((lambda (x) (rplaca x '6)) x) ((lambda (x) ((lambda (x) (rplaca x '6)) x)) x) ((lambda (x) ((lambda (x) ((lambda (x) (rplaca x '6)) x)) x)) x) и т.д.
Объяснение кода листинга программы
В данном коде используется функция rplaca, которая заменяет первый элемент списка на новое значение. В основе кода лежит рекурсивная функция, которая вызывает саму себя с аргументом x.
(rplaca x '6)- заменяет первый элемент спискаxна 6.((lambda (x) (rplaca x '6)) x)- создает новую функцию, которая вызываетrplacaс аргументомx, заменяя первый элемент спискаxна 6.((lambda (x) ((lambda (x) (rplaca x '6)) x)) x)- создает новую функцию, которая вызывает функцию, созданную на предыдущем шаге, с аргументомx, заменяя первый элемент спискаxна 6.((lambda (x) ((lambda (x) ((lambda (x) (rplaca x '6)) x)) x)) x)- создает новую функцию, которая вызывает функцию, созданную на третьем шаге, с аргументомx, заменяя первый элемент спискаxна 6.- и так далее...
Таким образом, в данном коде создается рекурсивная функция, которая вызывает саму себя с аргументом
x, заменяя первый элемент спискаxна 6.