On Sat, Mar 27, 2021 at 11:47 PM Александр Коновалов
a.v.konovalov87_AT_mail.ru <refal@botik.ru> wrote:

> [...]
>
> Вариативность (но с ущербом для эффективности) можно реализовать и в
> Рефале-5. Код, эквивалентный коду Рефала-6, будет выглядеть так:
>
> F {
>   e.Name 〈что-то ещё〉, <F-Name e.Name> : T = … ;
>   … = …;
> }
>
> F-Name {
> 'Маша' = T;
> 'Саша' = T;
> e.Other = F;
> }
>

А разве такое в Рефале-5 можно? С 90-х годов я рефал-плюсовый программист,
мог и забыть. А сейчас лень заглядывать в руководство, да и, думаю, будет
полезно обсудить здесь логики разных Рефалов, из которых вытекают различные
решения по синтаксису. Помнится, подобные вопросы мы специально обсуждали в
те годы, и у меня отложилось, что:

1. Запятая в Рефал-5 "непрозрачна для откатов", то есть "неотож" после
запятой не вызывает возврат к следующему варианту в образце левее или
следующему предложению. Помнится, "длинные" откаты вызывали отторжение у
Турчина и у других апологетов Рефала-5.

2. Синтаксиса вида "выражение : образец" в Рефале-5 нет. Помнится, при
обсуждении расширений Рефала Плюс по сравнению с Рефалом-5, Турчин говорил,
что в Рефале-5 двоеточие означает вызов подставленного тела вспомогательной
функции и только это. Поэтому, даже если в ней только одно предложение, всё
равно надо ставить фигурные скобки, чтобы выглядело одинаково с
определением функции. То есть данный код синтаксически правильно надо
писать так (а семантика будет другая, чем хотелось):

F {
  e.Name 〈что-то ещё〉, <F-Name e.Name> : { T = … };
  … = …;
}

И уж нечего и говорить, что фигурные скобки в Рефале-5 безоткатные.

Правильно я помню Рефал-5 и его логику?

Андрей

>
  • Ref... nikolai . kondratiev_AT_gmail . com
    • ... nikolai . kondratiev_AT_gmail . com
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... nikolai . kondratiev_AT_gmail . com
      • ... Andrei Klimov andrei_AT_klimov . net
        • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
          • ... Andrei Klimov andrei_AT_klimov . net
      • ... Arkady Klimov arkady . klimov_AT_gmail . com
        • ... Александр Гусев gusev_aleksandr_AT_mail . ru
          • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Andrei Klimov andrei_AT_klimov . net
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
                • ... Andrei Klimov andrei_AT_klimov . net
                • ... nikolai . kondratiev_AT_gmail . com
                • ... Александр Гусев gusev_aleksandr_AT_mail . ru
                • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
                • ... nikolai . kondratiev_AT_gmail . com
                • ... nikolai . kondratiev_AT_gmail . com
                • ... Arkady Klimov arkady . klimov_AT_gmail . com
                • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
                • ... Александр Гусев gusev_aleksandr_AT_mail . ru

Ответить