On Thu, Nov 14, 2024 at 9:32 PM Александр Коновалов
a.v.konovalov87_AT_mail.ru <[email protected]> wrote:

> Ограничение на функцию Purify, мне кажется, можно сформулировать и так:
> если в правой части стереть все вызовы функций, то должна получиться
> подстрока строки токенов образца.
>
Не совсем так, если только не понимать под подстрокой подмножество символов
строки. Правильнее так: если в правой части стереть все вызовы функций, то
должна получиться конкатенация подстрок образца, взятых по одному разу в
том порядке, в каком они входят в образец.

On Thu, Nov 14, 2024 at 9:32 PM Александр Коновалов
a.v.konovalov87_AT_mail.ru <[email protected]> wrote:

> А как компилятор должен отличать — в функции Parse терм получен от линзы
> (а значит, должен быть восстановлен после выхода из линзы) или создан
> заново? Если я запишу (Ident 'm_' e.Name) — в этот терм позиция добавится
> на выходе?


А это задача рантайма, а не компилятора.
1. При выполнении линзы к термам, которые она выдаёт наружу, добавляется
информация о том, каким исходным термам они соответствуют. Достаточно при
этом аннотировать только те термы, которые отличаются от исходных.
2. Дальше объектное выражение, порождённое линзой, поступает в
"линзированную функцию", которая работает обычным образом. Надо только
следить, чтобы код, порождённый компилятором для "линзированной" функции,
не потерял аннотации термов.
3. После завершения "линзированной" функции происходит обход её результата
с заменой всех аннотированных термов на их аннотации, т.е. на исходные
термы, которым они соответствуют.

On Thu, Nov 14, 2024 at 9:32 PM Александр Коновалов
a.v.konovalov87_AT_mail.ru <[email protected]> wrote:

> Про гиперпараметры: если линзы добавляются в Рефал-7, то можно
> пользоваться каррированием — функция Purify получает гиперпараметры и
> возвращает функцию-линзу. <<Purify SkipComments> | Parse e.tokens>.


Да, это годится. Вот так одна суперфича -- функции высших порядков --
помогает использовать другую суперфичу :-)

On Thu, Nov 14, 2024 at 9:32 PM Александр Коновалов
a.v.konovalov87_AT_mail.ru <[email protected]> wrote:

> Про отношение «выразительность/сложность». Сложность определяется не
> только длиной БНФ, но и описанием семантики. Семантика линз довольно таки
> непростая.


Несомненно. Я бы даже сказал, что такой показатель как сложность языка
программирования не определяется каким-то объективным критерием, а является
экспертным мнением. Но длина БНФ, на мой взгляд, влияет на экспертное
мнение в сторону роста этого показателя, потому что когда мы добавляем
новые синтаксические конструкции, возникают вопросы об их сочетании с уже
имеющимися синтаксическими конструкциями и друг с другом, и объём
документации, необходимой для их реализации в компиляторе и для их
использования, в общем случае растёт нелинейно.
  • Re:... Стеллецкий Василий sw710_AT_yandex . ru
  • Re:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Стеллецкий Василий sw710_AT_yandex . ru
  • Re:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • Re:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • Re:... Стеллецкий Василий sw710_AT_yandex . ru
  • Re:... Александр Коновалов a . v . konovalov87_AT_mail . ru

Ответить