Сбылась мечта идиота - я почти сделал из лиспа дельфи :) Кое-что недопилено, конечно, но в целом результат вполне прощупывается:
опр функ Foo(SYM -- :л:CL.SYMBOL)
тело
л-печать(SYM.NAME())
зап SYM.VALUE = 6
л-печать(SYM.VALUE)
кно
Foo(цит(б))
(declaim (ftype (function (SYMBOL ) t) |Foo| ))
(proclaim '(ftype (function (SYMBOL ) t) |Foo| ))
(defun |Foo| (SYM)
(declare (type SYMBOL SYM))
(PRINT (symbol-name sym))
(setf (symbol-value sym) 6)
(PRINT (symbol-value sym)))
(|Foo| (QUOTE |б|))
Итак, что я наконец-то получил? Конечно, пример маленький и не во всём показателен, но:
1. Общее количество букв уменьшилось ВДВОЕ.
2. Количество скобок уменьшилось более чем ВЧЕТВЕРО.
3. Количество повторений слова symbol уменьшилось в ШЕСТЬ раз. Символ здесь, как вы понимаете, моделирует какой-то defstruct - а структуры я пока что в Яр не впилил.
4. Лисп, чувствительный к регистру символов, без вертикальный чёрточек.
5. Пошаговый отладчик. При трансляции можно включить инструментатор и можно будет действительно ходить по коду, а не прыгать в случайные места раз в сто километров, как это сейчас сделано в SBCL.
Вот, собственно, что я собирался сделать месяца за два летом 2015-го года. Надо было сразу перевести в следующую единицу измерения, и получилась бы правильная оценка трудоёмкости.
Что теперь я ожидаю от лисперов: я ожидаю, что они будут меня ругать. Написанный здесь код - это сумма множества предварительных этапов. Я публиковал свои решения на каждом этапе, и на каждом этапе меня ругали. Меня называли психом, блюб программистом и прочими другими плохими словами. Теперь настоящие лисперы должны просто лопнуть от злости. Хорошо лишь то, что их почти не осталось.
Давайте, начинайте называть меня психом и ламером, а я буду ржать над вами.