Функциональные объекты, включая анонимные функции, сравниваются
с помощью eq
:
(equal (lambda (x) x) (lambda (x) x)) => NIL
Почему не реализовано в общем виде (даже в языках семейства ML)?
Единственный способ проверки эквивалентности функций - экстенсиональный, т.е. сравнение результатов их применения ко всевозможным аргументам.
Экстенсиональное равенство функций неразрешимо в общем случае.
Свойство функции называется нетривиальным, если существуют функции как и обладающие им, так и не обладающие.
Теорема Райса. Любое нетривиальное свойство функции не вычислимо из её текста.