Lisp разработал набор интересных языковых функций довольно рано в академическом мире, но большинство из них никогда не завоевывали популярность в производственных средах.
Некоторые языки, такие как JavaScript, адаптировали базовые функции, такие как сборка мусора и лексические замыкания, но все вещи, которые могут реально изменить способ написания программ в больших масштабах, такие как мощные макросы, код для данных и пользовательский элемент управления структуры, кажется, распространяются только в других функциональных языках, ни один из которых не является практичным для использования в нетривиальных проектах.
Сообщество функционального программирования также выдвинуло много других интересных идей (помимо самого функционального программирования), таких как ссылочная прозрачность, обобщенные выражения падежа (т. Е. Сопоставление с образцом, а не искажение, как переключатели C / C #) и карри функции, которые кажутся очевидными полезными в обычном программировании и должны легко интегрироваться с существующей практикой программирования, но по некоторым причинам, кажется, застряли в академическом мире навсегда.
Почему этим функциям так сложно адаптироваться? Существуют ли какие-либо современные, практичные языки, которые на самом деле учатся на Лиспе вместо того, чтобы наполовину копировать «функции первого класса», или существует внутренний конфликт, который делает это невозможным?