LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Ну офигенное новаторство, я шизею! Такое есть в редакторе LW. Нужно быть конченым нищебродом, чтобы не иметь денег даже на LW. Открою тебе тайну, как пока ещё профессиональный лиспер: профессионалы юзают не один лисп, а несколько, и LW среди них первый, благодаря своему уникальному отладчику. Как сказал мой шеф, «каждый лисп не-работает по-своему». Очень точно и красиво подмечено! Но комбинируя несколько лиспов, можно более-менее успешно вести разработку.

Но для конченых нищебродов есть hemlock. Который тоже сдох, конечно же. Я его было дело отчасти воскресил, но полностью довести до ума рук не хватило. Т.е. на данный момент он намного тормознее LW, но зато у меня он поддерживает и пакеты (емакс тоже поддерживает, не знаю, что они там брешут), и таблицы чтения.

И я тебе открою ещё одну тайну: распарсить код на Common Lisp вообще невозможно, из-за readmacro. Тот момент, когда я посмотрел на реализацию перехода к определению в Swank, во многом определил мой отход от CL. Это не просто криво, это криво и нельзя исправить. Костыль на костыле.

Чтобы исправить это, нужен отдельный этап чтения, свободный от побочных эффектов, который отвечает за собственно синтаксическое восприятие ридмакросов. Т.е. должно быть сначала преобразование текста в AST, а уже затем обработка побочных эффектов для ридмакросов. Только так можно будет создать парсер для CL хотя бы в теории. Но это невозможно, потому что стандарт CL никто менять не собирается - он «всех устраивает». Равно как нельзя и выкинуть из стандарта те вещи, которые мешают сделать нормальное IDE. Например, puri портит таблицу чтения и это пагубно сказывается на способности емакса читать лисповые файлы. Выкинь её - и у лиспа сразу отвалится применение в вебе. У гугла раньше было руководство по стилю, где явно запрещалось заводить ридмакросы. Но если мы посмотрим реальные (интересные) библиотеки, то их там всегда хватает.

Вишенкой на торте является то, что и asdf не удалось научить работать с таблицами чтения. Намесить грязи они смогли (возможно, это Fare грамотно заминировал вражескую территорию перед отступлением, доведя asdf из кривого, но привычного состояния в чуть менее кривое, но уже почти не юзабельное). А решить задачу - не смогли.

Короче говоря, CL - это тоже секта, и я был её прихожанином достаточно долго. Основная догма состоит в том, что в лиспе «можно сделать». Я пребывал в иллюзии, что в лиспе «можно сделать». Более того, я почти сделал кое-что из этого «можно сделать». Но когда пытаешься придти к окончательному и качественному решению, а не к работающему прототипу, то оказывается, что нельзя. В CL «нельзя сделать» IDE. Просто нельзя, и всё.

Исходная версия den73, :

Ну офигенное новаторство, я шизею! Такое есть в редакторе LW. Нужно быть конченым нищебродом, чтобы не иметь денег даже на LW. Открою тебе тайну, как пока ещё профессиональный лиспер: профессионалы юзают не один лисп, а несколько, и LW среди них первый, благодаря своему уникальному отладчику. Как сказал мой шеф, «каждый лисп не-работает по-своему». Очень точно и красиво подмечено! Но комбинируя несколько лиспов, можно более-менее успешно вести разработку.

Но для конченых нищебродов есть hemlock. Который тоже сдох, конечно же. Я его было дело отчасти воскресил, но полностью довести до ума рук не хватило. Т.е. на данный момент он намного тормознее LW, но зато у меня он поддерживает и пакеты (емакс тоже поддерживает, не знаю, что они там брешут), и таблицы чтения.

И я тебе открою ещё одну тайну: распарсить код на Common Lisp вообще невозможно, из-за readmacro. Тот момент, когда я посмотрел на реализацию перехода к определению в Swank, во многом определил мой отход от CL. Это не просто криво, это криво и нельзя исправить. Костыль на костыле.

Чтобы исправить это, нужен отдельный этап чтения, свободный от побочных эффектов, который отвечает за собственно синтаксическое восприятие ридмакросов. Т.е. должно быть сначала преобразование текста в AST, а уже затем обработка побочных эффектов для ридмакросов. Только так можно будет создать парсер для CL хотя бы в теории. Но это невозможно, потому что стандарт CL никто менять не собирается - он «всех устраивает». Равно как нельзя и выкинуть из стандарта те вещи, которые мешают сделать нормальное IDE. Например, puri портит таблицу чтения.

Вишенкой на торте является то, что и asdf не удалось научить работать с таблицами чтения. Намесить грязи они смогли (возможно, это Fare грамотно заминировал вражескую территорию перед отступлением, доведя asdf из кривого, но привычного состояния в чуть менее кривое, но уже почти не юзабельное). А решить задачу - не смогли.

Короче говоря, CL - это тоже секта, и я был её прихожанином достаточно долго. Основная догма состоит в том, что в лиспе «можно сделать». Я пребывал в иллюзии, что в лиспе «можно сделать». Более того, я почти сделал кое-что из этого «можно сделать». Но когда пытаешься придти к окончательному и качественному решению, а не к работающему прототипу, то оказывается, что нельзя. В CL «нельзя сделать» IDE. Просто нельзя, и всё.