На це питання важко відповісти, оскільки хтось повинен знати всі мови для того, щоб знати, що жодна інша не має певної функції, доступної в Lisp, тому наступне базується на мовах, з якими я маю досвід.
У верхній частині голови умови , які я не бачив жодної іншої мови. Подумайте "винятки", але де стек викликів не розкручений і де абонент може надіслати значення відновлення на винятковий сайт, але не порушуючи стек викликів між обробником та джерелом винятку. Справедливо кажучи, це справді просто спеціальне застосування продовжень, тому Ruby та Scheme (принаймні) можуть це зробити.
Макросистема Lisp виграє від регулярності / гомоконічності, але Scala планує включити їх як стабільну особливість у 2.12, а Template Haskell вимагає подібних особливостей. Я б стверджував, що вони будуть більш синтаксично складними, ніж у Lisp, але генерування коду часу компіляції існує незалежно.
Подумайте, однак, пряма побудова форм - це лише один вид макросів, доступних у Lisp: я ніде більше не бачив еквівалента макросів компілятора чи читача.
Здатність деяких діалектів (наприклад, SBCL ) зберігати повноцінне, відновлюване процес зображення є класною, але знову ж таки не унікальною: Smalltalk займається цим десятиліттями.
Багато інших мов дозволяють присвоювати деструктуризацію при поверненні масивів, але підхід # 'значень та #' багатозначне прив'язування / нехай-значення все ще здається специфічним для загальної програми Lisp та Schema (яка все ще може робити "регулярне" руйнування також ). "Wantarray" Perl дозволяє функції визначати, чи викликається він у скалярному, списку чи недійсному контексті, щоб він міг регулювати своє повернене значення аналогічним (-ish) способом, але я не бачив "справжніх" кількох повернених значень зовні схеми / ЗР.
Щодо мовних особливостей, то, мабуть, не так багато, що Lisp може зробити, що інші мови не можуть (Turing повнота є такою, якою є). Що це , однак, є мовою , де код виражається в термінах своїх власних структур даних, що робить велику ідею ™ -Ось коди даних то , що відносно легко працювати.