Добрый день, Бойко!

Спасибо за интересные замечания!

Вы не могли бы пояснить, что вы имеете ввиду под «цитированием себя и 
охватывающей функции при помощи … стандартной пары знаков или имён»? Просто мне 
не очень понятна ваша терминология. И, если не сложно, приведите, пожалуйста, 
пример, используя какой-нибудь псевдокод (не обязательно Рефала).

Рантайм я писал достаточно давно, как и давно писал презентацию. Зачем писал 
эти избыточные конструкции? Мне они тогда нравились почему-то, потому и писал. 
В текущей версии исходников их уже нет:
https://github.com/bmstu-iu9/simple-refal/blob/master/src/srlib/refalrts.h
Руки дошли удалить их примерно год назад:
https://github.com/bmstu-iu9/simple-refal/commit/da7867

-----Original Message-----
From: Boyko Bantchev [mailto:boyk...@gmail.com] 
Sent: Thursday, August 3, 2017 4:41 PM
To: refal@botik.ru
Subject: Re: FW: Рефал умер?

Здравствуйте, Александр!

> Именованные вложенные функции позволят программисту писать рекурсивные 
> и взаиморекурсивные функции ...

На мой взгляд, большинство, если не почти все случаи, когда кажется, что нужны 
именованные функции для рекурсии или взаимной рекурсии, исчезают, если 
позволить любой функции цитировать себя и охватывающую функцию при помощи 
предназначенной именно для этого стандартной пары знаков или имен.  Почему 
такое средство отсутствует почти во всех ЯП, мне уже много лет совершенно 
непонятно.

(А применима ли эта идея конкретно к вашей реализации я не знаю, так как следил 
посты поверхностно.)

Еще вметка.  Взглянув на ваши слайды, заметил несколько конструкций вида

    typedef struct Node *NodePtr;
    typedef struct Node { T data; Node* next; } Node;

На C++ нет потребности писать таким усложненным образом, поскольку

    struct Node { T data;  Node* next; };

вполне хорошо работает.  (И вообще, везде в программе Node равнозначно struct 
Node — создавать синоним не приходится.)

Бойко Банчев

Ответить