Вопрос по семантике примерно такой: если мы в результатной части линзированной 
функции написали (Ident e.Name), то это имеется ввиду залинзированный терм из 
аргумента или совершенно новый независимый терм (который разлинзировать не 
нужно)? Ведь та же функция Parse может из цепочки термов порождать 
синтаксическое дерево, в котором буквально присутствует узел (Ident e.Name) без 
координат, и приписывание координат к нему будет ошибкой.

И второй вопрос, который лучше проиллюстрировать примером:
Parse {
…
Let (Ident e.Name) Assign e.Expr1 Let (Ident e.Name) Assign e.Expr2
= ERROR (Ident e.Name) ': double definition';
…
}
Вхождение (Ident e.Name) соответствует первому вхождению в образец или второму?

А как эту фичу предполагалось развивать?
On нояб. 14 2024, at 5:23 вечера, Sergei Skorobogatov 
s.yu.skorobogatov_AT_gmail.com <[email protected]> wrote:
> On Thu, Nov 14, 2024 at 5:05 PM Александр Коновалов 
> a.v.konovalov87_AT_mail.ru (http://a.v.konovalov87_AT_mail.ru) 
> <[email protected] (mailto:[email protected])> wrote:
>
> > Сергей Юрьевич, такое совершенно непонятно, как реализовывать, плюс есть 
> > неочевидности по семантике (что для смутного наброска приемлемо). Но 
> > выглядит красиво.
>
>
> Я-то понимаю, как такое реализовать: добавляем каждому терму в представлении 
> объектного выражения в памяти рантайма указатель на терм, упрощением которого 
> он является, и при выходе из "линзированной" функции заменяем все упрощённые 
> термы на их оригиналы.
>
> Как разобраться с семантикой, чтобы работал этот пример и подобные ему 
> простые примеры, я тоже приблизительно представляю. Но, на мой вкус, 
> добавление этой фичи ради таких простых вариантов использования не имеет 
> смысла, т.е. её надо как-то развить. А вот при попытке её развить и вылезают 
> главные неприятности с семантикой, и я так в своё время и не смог ничего 
> путного придумать.
    • ... Стеллецкий Василий sw710_AT_yandex . ru
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Стеллецкий Василий sw710_AT_yandex . ru
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Стеллецкий Василий sw710_AT_yandex . ru
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru

Ответить