Регистрация | Войти
Lisp — программируемый язык программирования
RSS
макросы в Scala
den73 - 15.08.2017 10:24, Сообщений - 4
Я почитал туториал от 2016 года и написал очень краткую выжимку из него. 

Что можно сказать? Во-первых, CL как язык для МП устаревает и теряет привлекательность буквально у нас на глазах. В scala, конечно, МП менее удобно из-за более сложного синтаксиса, зато в Scala появилась концепция семантической БД - это результат семантического анализа текста со всеми типами данных и декларациями. В CL такой семантической БД нет. Притом что Scala - это даже не первый такой язык. Если я правильно понял, clang тоже такое умеет. 

Среди не афишируемых целей проекта Яр есть цель сделать именно такую семантическую БД. Теперь нет смысла это скрывать. 

Поимимо этого, кто не в курсе - Common Lisp _не является_ гомоиконным языком, потому что есть #. , квазицитаты частично обрабатываются, а комментарии теряются. Другие побочные эффекты чтения - это создание символов в пакетах. macro character-ы назначенные пользователем, могут делать что угодно, вплоть до запуска ракеты. Т.е. нельзя зачитать файл лиспа и проанализировать его средством без последствий для среды. Вообще нельзя. Для Java и C это сделать можно, а для лиспа - нет. Фига себе, да? Ещё одной целью проекта Яр является создание истинно гомоиконного языка. Причём это не моя прихоть, а обязательное условие для создания полноценной IDE, а не набора костылей, каковым является SLIME. 

Если ещё остались энтузиасты лиспа, можно попробовать сделать семантическую БД для CL. Есть augment-environment, к-рая поддерживается в CCL. В ней есть кое-какая информация о типах. Хотя на самом деле скорее всего придётся патчить компиляторы. 

У меня шкурный интерес здесь - если такая база будет, мне для проекта Яра будет достаточно отмапить эту базу на свой язык. 

[#]
> Есть augment-environment, к-рая поддерживается в CCL. В ней есть кое-какая информация о типах. Хотя на самом деле скорее всего придётся патчить компиляторы.

Есть hu.dwim.walker который делает это переносимым образом. Есть curlex который таскает с собой расширения для компиляторов sbcl, ccl, cmucl для получения этой информации
flyamt - 15.08.2017 18:45
[#] Ответ на комментарий от flyamt 15.08.2017 18:45
Спасибо!
den73 - 15.08.2017 19:40
[#] Ответ на комментарий от flyamt 15.08.2017 18:45
И ещё introspect-environment. Для полноты картины
flyamt - 19.08.2017 16:09
[#] Ответ на комментарий от flyamt 19.08.2017 16:09
Отлично, спасибо!
den73 - 19.08.2017 18:15
@2009-2013 lisper.ru