Александр! Эквивалентность меня интересует одна — равенство значений одноимённых переменных в образце. Т.е. какими свойствами должна обладать эта встроенная в язык проверка на равенство, чтобы не было логических противоречий. Есть две границы, за которые выходить нельзя. С одной стороны, копии всегда равны. С другой стороны, функции с разным поведением должны быть не равны. Последнее я пытался формализовать в слайде про фазы луны и в предыдущем письме. Но, похоже, я больше всё запутал, чем объяснил.
С уважением, Александр Коновалов From: Александр Гусев gusev_aleksandr_AT_mail.ru <refal@botik.ru> Sent: Wednesday, May 19, 2021 11:57 AM To: refal@botik.ru Subject: Re[2]: В защиту ссылок в Рефале – Was: Рефал-семинар 17 мая 2021 в 10:30 в Zoom'e Доброе! Я подозреваю, что тут мы оказываемся в пограничной зоне с ООП. Функция эквивалентности может быть определена для класса функции или класса объекта. Тогда всё просто. Иначе обобщение может превысить порог сложности для восприятия. К случаю, я призываю без крайней необходимости не поднимать порог вхождения в программирование на Рефале. Он и так достаточно усложнился, а изначально простота и доступность понимания были важными «фишками» языка. Или явно делить аудиторию: «Рефал для чайников» и «Рефал для яйцеголовых». Относительно «чистоты» функции и побочных эффектов в общем случае про функцию ничего нельзя сказать. Однако, можно проводить некоторый автоматический анализ и выявлять функции с устойчивыми этими свойствами на момент выполнения (то есть делить их на те, про которые можно такое утверждать и те, про которые нельзя ничего утверждать). Это касается как раз вычислений без остановки интерпретатора — одна из трудностей, что в течении активности программы функции могут меняться, причём кардинально. Таким образом, оптимизация должна освежаться на момент каждой конкретизации. У меня эта проблема висит нерешённая. Среда, 19 мая 2021, 11:14 +03:00 от Александр Коновалов a.v.konovalov87_AT_mail.ru <refal@botik.ru <mailto:refal@botik.ru> >: Написать, что если s.F и s.G равны, то <Eq (<s.F e.Arg>) (<s.G e.Arg>)> будет равно True нельзя, т.к. в Рефале функции могут быть нечистыми (представьте, что s.F ≡ s.G ≡ &Get, функция чтения файла, тогда два последовательных вызова прочитают две разные строчки). Поэтому в докладе пришлось привлекать астрономическое явление, а здесь говорить о взаимозаменяемости исходников. С уважением, Александр Гусев gusev_aleksa...@mail.ru <mailto:gusev_aleksa...@mail.ru>