t.K1 и e.V1 они из «многоточий» в левой части. Я тоже подумал, что вторая eL — 
опечатка и должно быть eR .

Отправлено из Mailspring (https://getmailspring.com/), лучшего бесплатного 
приложения электронной почты
On нояб. 14 2024, at 5:07 вечера, Стеллецкий Василий sw710_AT_yandex.ru 
<[email protected]> wrote:
> Мда, господа! Я уже четверть века не занимался "новыми" версиями рефала, но 
> тогда 25 лет назад, я их вроде читал и понимал...
> [
>
> Рассмотрим, например, таблицу sT. Условимся, что ее содержимое - это список 
> термов-пар вида (tK eV), где tK - ключ, eV - значение.
> Тогда можно было бы писать:
> ... <GETV sT> : eL (tK eV) eR , ... = <SETV sT eL (t.K1 e.V1) eL>
>
> ]
> Т.е. GETV вызывается из левой части предложения с одним аргументом СИМВОЛОМ 
> (ну ладно, возможно ссылка, хотя такого не припомню)
> Ну пусть она увидела eL (tK eV) eR [а как она узнала, что это нужный ей tK?], 
> НО ОТКУДА ВЗЯЛИСЬ (t.K1 e.V1) в правой части?
> Ой, ребята, извините за ликбез, Но может кому тоже станет яснее...
> ... Видимо последняя eL это eR...
>
>
> --
> С уважением,
>
> Василий
> [email protected]
>
>
>
> ----------------
> 14.11.2024, 16:14, "Стеллецкий Василий sw710_AT_yandex.ru" <[email protected]>:
> Кому: [email protected] ([email protected]);
> Тема: Синтаксис словарей в Рефале!;
>
> > Александр Владимирович!
> > Т.е. выгода из-за длины идентификатора Table, а если вместо него 
> > использовать T, - то выгоды никакой?
> >
> >
> > --
> > С уважением,
> >
> > Василий
> > [email protected] (mailto:[email protected])
> >
> >
> >
> > ----------------
> > 14.11.2024, 15:52, "Александр Коновалов a.v.konovalov87_AT_mail.ru" 
> > <[email protected] (mailto:[email protected])>:
> > Кому: [email protected] (mailto:[email protected]) ([email protected] 
> > (mailto:[email protected]));
> > Тема: Синтаксис словарей в Рефале!;
> >
> > > Василий Игоревич!
> > >
> > > «Если предлагаемое выражение длиннее уже имеющегося, зачем его вводить?»
> > >
> > > Новый синтаксис короче, т.к. разбираемая переменная упоминается только 
> > > один раз. А для частного случая AsIs можно использовать более короткую 
> > > запись `@ [: …] `. Можно сравнить длину:
> > > (e.Name) e.Table @ [: e.1 (e.Name t.Value) e.2] = …
> > > (e.Name) e.Table, e.Table : e.1 (e.Name t.Value) e.2 = …
> > > Новый вариант короче на 4 символа — длину слова «Table» минус 1. При 
> > > другой расстановке пробелов, конечно, результат будет другим, но для 
> > > более длинных имён выигрыш будет.
> > >
> > > С уважением,
> > > Александр Коновалов
> > >
> > > Отправлено из Mailspring (https://getmailspring.com/), лучшего 
> > > бесплатного приложения электронной почты
> > >
> > >
> > > On нояб. 14 2024, at 3:34 дня, Стеллецкий Василий sw710_AT_yandex.ru 
> > > <[email protected] (mailto:[email protected])> wrote:
> > > > Ой, братцы, что-то я запутался
> > > > [
> > > > В этой нотации можно определить тождественный геттер и благодаря нему 
> > > > иметь возможность обращаться и к подвыражению целиком (чтобы целиком 
> > > > его использовать в результате), и к его частям:
> > > > (e.Name) e.Table @ [AsIs e.1 (e.Name t.Value) e.2]
> > > > = <F e.Table> <G t.Value>;
> > > > что будет эквивалентно
> > > > (e.Name) e.Table
> > > > , e.Table : e.1 (e.Name t.Value) e.2
> > > > = <F e.Table> <G t.Value>;
> > > > ]
> > > > Если предлагаемое выражение длиннее уже имеющегося, зачем его вводить?
> > > > Извините. за ликбез.
> > > >
> > > >
> > > >
> > > > --
> > > > С уважением,
> > > >
> > > > Василий
> > > > [email protected] (mailto:[email protected])
> > > >
> > > >
> > > >
> > > > ----------------
> > > > 14.11.2024, 15:14, "Александр Коновалов a.v.konovalov87_AT_mail.ru" 
> > > > <[email protected] (mailto:[email protected])>:
> > > > Кому: [email protected] (mailto:[email protected]) ([email protected] 
> > > > (mailto:[email protected]));
> > > > Тема: Синтаксис словарей в Рефале!;
> > > >
> > > > > «Геттер и сеттер -- это фиговый синтаксический сахар, потому что 
> > > > > вызываемая функция должна знать, что ей передали выражение, к 
> > > > > которому нужно применять геттер. А хотелось бы, чтобы ей казалось, 
> > > > > что ей передали выражение, к которому уже применили геттер :-)»
> > > > >
> > > > > Не представляю синтаксис для этой цели, кроме того, который я 
> > > > > приводил выше:
> > > > > перем @ [Геттер образец]
> > > > > что эквивалентно приписыванию условия
> > > > > , <Геттер перем> : образец
> > > > > Если просто в образце написать
> > > > > [Геттер образец]
> > > > > то мы потеряем возможность обращаться к исходному («сырому») значению 
> > > > > в правой части.
> > > > >
> > > > > Для симметрии для обновления значения в правой части можно 
> > > > > использовать аналогичный синтаксис
> > > > > перем @ [Сеттер результат]
> > > > > но он ничем не лучше простого вызова функции
> > > > > <Сеттер перем результат>
> > > > >
> > > > > Можно вместо
> > > > > тип.индекс @ [Геттер образец]
> > > > > писать
> > > > > [Геттер образец].индекс /* тип описывается в определении геттера */
> > > > > или
> > > > > тип[Геттер образец]индекс
> > > > > (скобки могут быть любыми) или
> > > > > Геттер.индекс @ [образец]
> > > > > (тоже скобки не обязательно квадратные).
> > > > >
> > > > > Можно пойти по пути Refal’а-D, который я тут пересказывать не буду, 
> > > > > ограничусь ссылкой и скриншотом:
> > > > >
> > > > > http://refal.botik.ru/library/refal2015_issue-II.pdf (стр. 97)
> > > > >
> > > > > Но путь Рефала-Д мне не нравится.
> > > > >
> > > > > Другие варианты синтаксиса для этой цели мне не очевидны.
> > > > >
> > > > > Мы хотим увидеть в выражении другое выражение. Хотим увидеть = хотим 
> > > > > сопоставить с образцом. Способ видения (геттер, линза) должен 
> > > > > указываться явно, т.к. Рефал динамически типизированный. Подобразец 
> > > > > нужно отграничить от остального образца. Поэтому у нас в записи 
> > > > > должны появиться скобки, имя линзы и подобразец внутри скобок. Также 
> > > > > полезно иметь возможность обратиться к исходному значению (но это 
> > > > > опционально). Отсюда и получаются записи вида
> > > > > 1) [Геттер образец]
> > > > > 2) перем @ [Геттер образец]
> > > > > Тут можно варьировать синтаксические детали: вид скобок (круглые, 
> > > > > квадратные, фигурные, угловые…), разделитель (я указал традиционную 
> > > > > для ФЯ собачку, но можно и любой другой знак или вообще ничего не 
> > > > > указывать) и взаимный порядок расположения элементов.
> > > > >
> > > > > Ничего другого мне в голову не приходит.
> > > > >
> > > > > В этой нотации можно определить тождественный геттер и благодаря нему 
> > > > > иметь возможность обращаться и к подвыражению целиком (чтобы целиком 
> > > > > его использовать в результате), и к его частям:
> > > > > (e.Name) e.Table @ [AsIs e.1 (e.Name t.Value) e.2]
> > > > > = <F e.Table> <G t.Value>;
> > > > > что будет эквивалентно
> > > > > (e.Name) e.Table
> > > > > , e.Table : e.1 (e.Name t.Value) e.2
> > > > > = <F e.Table> <G t.Value>;
> > > > > Случай тождественной линзы на практике будет распространённым, для 
> > > > > него можно ввести сокращённую запись, например `перем @ [= образец]`.
> > > > >
> > > > > С уважением,
> > > > > Александр Коновалов
> > > >
> > > >
> > > >
> > >
> >
> >
> >
>
>
>

  • 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:... Стеллецкий Василий sw710_AT_yandex . ru
  • Re:... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • Re:... Arkady Klimov arkady . klimov_AT_gmail . com
  • Re:... Александр Коновалов a . v . konovalov87_AT_mail . ru

Ответить