Александр Владимирович!
Вы безусловно правы! Про копилку в рефал-5 я подзабыл.
Конечно, копилка функционально вполне заменяет статические ящики. Только вопрос наглядности и эффективности...
 
Ну ладно, раз есть Копилка, рефал-5 - тоже нормальный рефал, на нем тоже можно писать. Уговорили ;)
 
-- 
С уважением,
Василий
[email protected]    
 
 
 
----------------
13.11.2024, 19:53, "Александр Коновалов a.v.konovalov87_AT_mail.ru" <[email protected]>:
Кому: [email protected] ([email protected]);
Тема: Синтаксис словарей в Рефале!;
 
Василий Игоревич и Сергей Юрьевич!
 
В Рефале-5 нет вообще никаких ящиков, ни статических, ни динамических. Но есть копилка — глобальный словарь стеков объектных выражений.
 
Использование статических ящиков или копилки как словаря глобальных переменных я не одобряю из-за того, что затрудняется понимание программы — по вызову функции невозможно понять, с какими данными она работает, т.к. она может брать данные не только из аргументов, но и из глобального состояния, и, соответственно, результат не возвращать, а тоже куда-то прятать.
 
При этом статические ящики лучше копилки тем, что они описываются явно: есть определение статического ящика (или имя в списке extern), значит, есть некоторое глобальное состояние. В случае же копилки, чтобы понять, какими переменными пользуется программа, нужно проанализировать все вызовы Br, Dg, Rp и Cp.
 
Динамические ящики представляют некоторый компромисс между чисто функциональным стилем и императивным — по вызову функции видно, к каким ящикам она обращается.
 
В защиту копилки могу сказать, что при определённой дисциплине ею можно пользоваться как локальными переменными: до выполнения какого-то алгоритма положить на вершины соответствующих стеков (Br) начальные значения, в самом алгоритме для работы с ними использовать только Cp для чтения и Rp для присваивания, после завершения алгоритма результирующие значения удалить прочтя (или прочитать удаля) при помощи Dg. Но я не видел программ, где так поступают.
 
Сам я предпочитаю не пользоваться глобальным изменяемым состоянием, как и Сергей Юрьевич. А динамических ящиков в Рефале-5λ нет.
 
С уважением,
Александр Коновалов
 
    • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
  • RE:... Александр Коновалов 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
          • ... Стеллецкий Василий sw710_AT_yandex . ru
            • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
              • ... Стеллецкий Василий sw710_AT_yandex . ru
          • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Стеллецкий Василий sw710_AT_yandex . 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
              • ... Стеллецкий Василий 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

Ответить