Size: a a a

2020 September 02

AE

Alexey Egorov in Lisp Forever
Понятно!
источник

VM

Vyacheslav Mikushev in Lisp Forever
Я оттуда узнал про Common Lisp и Forth.
источник

AE

Alexey Egorov in Lisp Forever
Ого.
источник

VM

Vyacheslav Mikushev in Lisp Forever
И про метапрограммирование.:)
источник

ДК

Дмитрий К in Lisp Forever
У меня вот такая идея, позволит повысить читаемость лиспа, сохраняя его достоинства.
источник

ДК

Дмитрий К in Lisp Forever
Переслано от Дмитрий К
Начну, пожалуй, со своей идеи. Чтобы обеспечить богатство инструментария, машинная работа с исходниками должна быть как можно более простой, а значит язык должен иметь как можно более простой синтаксис, чтобы написать его парсер мог любой джуниор. В идеале - сами исходные коды должны быть ни чем имым, как сериализованное абстрактное синтаксическое дерево. Апофеозом этой идеи является Лисп, где есть только "атомы" и их "списки". Семантика определяется именем атома и контекстом его использования. К сожалению, плоские списки имеют довольно слабую читаемость.

Типичный код на Лиспе:
(defun fibonacci (n)
 (loop repeat n
       for a = 0 then b
       and for b = 1 then (+ a b)
       finally (return b)))


Даже в нём, как правило первый элемент имеет особое значение, определяющее семантику остальных элементов. В обилии скобочек легко запутаться. Гораздо лучше было бы воспользоваться синтаксисом со значимыми отступами, что значительно улучшило бы читаемость. Например, всё дерево можно представить в виде типизированных узлов, которые могут содержать списки других узлов. Вложенные узлы помещаются на отдельных строках с большим отступом.

Например:
test
 name \define and use custom macro with arguments
 case jack
   inherit
   let body cut-head cut-tail from
   tree body
     one
     two
     three
     four
 case
   two
   three
источник

AE

Alexey Egorov in Lisp Forever
Так.
источник

AE

Alexey Egorov in Lisp Forever
Ты в курсе про SRFI 49?
источник

YK

Yaroslav Khnygin in Lisp Forever
в репозитории CMU было подобное для CL
источник

YK

Yaroslav Khnygin in Lisp Forever
забыл как именно называлось
источник

AE

Alexey Egorov in Lisp Forever
Дмитрий К
Переслано от Дмитрий К
Начну, пожалуй, со своей идеи. Чтобы обеспечить богатство инструментария, машинная работа с исходниками должна быть как можно более простой, а значит язык должен иметь как можно более простой синтаксис, чтобы написать его парсер мог любой джуниор. В идеале - сами исходные коды должны быть ни чем имым, как сериализованное абстрактное синтаксическое дерево. Апофеозом этой идеи является Лисп, где есть только "атомы" и их "списки". Семантика определяется именем атома и контекстом его использования. К сожалению, плоские списки имеют довольно слабую читаемость.

Типичный код на Лиспе:
(defun fibonacci (n)
 (loop repeat n
       for a = 0 then b
       and for b = 1 then (+ a b)
       finally (return b)))


Даже в нём, как правило первый элемент имеет особое значение, определяющее семантику остальных элементов. В обилии скобочек легко запутаться. Гораздо лучше было бы воспользоваться синтаксисом со значимыми отступами, что значительно улучшило бы читаемость. Например, всё дерево можно представить в виде типизированных узлов, которые могут содержать списки других узлов. Вложенные узлы помещаются на отдельных строках с большим отступом.

Например:
test
 name \define and use custom macro with arguments
 case jack
   inherit
   let body cut-head cut-tail from
   tree body
     one
     two
     three
     four
 case
   two
   three
Ещё сразу пара вещей:
1. Писать парсер проще как раз когда есть скобочки, а не значимые отступы
2. В обилии скобочек сложно запутаться, если у тебя нормальные тулзы для редактирования
источник

YK

Yaroslav Khnygin in Lisp Forever
источник

AE

Alexey Egorov in Lisp Forever
Alexey Egorov
Ещё сразу пара вещей:
1. Писать парсер проще как раз когда есть скобочки, а не значимые отступы
2. В обилии скобочек сложно запутаться, если у тебя нормальные тулзы для редактирования
3. В Коммон Лиспе не только списки и атомы
источник

YK

Yaroslav Khnygin in Lisp Forever
источник

YK

Yaroslav Khnygin in Lisp Forever
идея довольно старая
источник

ДК

Дмитрий К in Lisp Forever
Alexey Egorov
Ты в курсе про SRFI 49?
Теперь да, но у меня идея сделать на базе формата Tree, где синтаксис проще, а в строках не надо экранировать спецсимволы.
источник

YK

Yaroslav Khnygin in Lisp Forever
источник

ДК

Дмитрий К in Lisp Forever
Alexey Egorov
Ещё сразу пара вещей:
1. Писать парсер проще как раз когда есть скобочки, а не значимые отступы
2. В обилии скобочек сложно запутаться, если у тебя нормальные тулзы для редактирования
1. Да примерно так же я бы сказал. А вот когда и отступы значимые и скобочки - это уже куда сложнее.
2. Не везде доступны "тулзы для редактирования". В телеграме вот до сих пор их нет. Хватит это терпеть!)
источник

ДК

Дмитрий К in Lisp Forever
Alexey Egorov
3. В Коммон Лиспе не только списки и атомы
А что ещё?
источник

AE

Alexey Egorov in Lisp Forever
Ридер-макро.
источник