> -- Александр Ильин писал(а):
> Программа на любом, даже самом чистом функциональном, языке программирования будет иметь некое "глобальное состояние" в процессе своего исполненияВерно и обратное - любую императивную программу можно трактовать как чисто функциональную. К примеру, подпрограммы Форта, которые могут менять состояние всего стека можно трактовать как чистые функции, которые принимают на вход один параметр-стек и возвращают новое значение - изменённый стек, которое присваивается новой переменной, затеняющей старую. Но дело-то не в трактовках.

> -- Александр Ильин писал(а):
> В этом смысле стек в Факторе - это только лишь параметры функций, а не набор глобальных переменных с произвольным доступомЕсли это так, тогда это частично объясняет, как в Факторе добились статической проверки кол-ва параметров. В Форте изменения стека доступны по всей глубине, хотя делать это лишний раз и считается дурным тоном.

> -- Цитата:
> Другими словами, стек в Факторе - это не структура данных, а способ организовать вызов функций.С другой стороны, тогда наоборот непонятно, почему Фактор следует называть стековым, ведь в таком случае главное его отличие в этом отношении от других языков в постфиксной записи вместо префиксной

> -- Цитата:
> Есть тип duration, есть тип timestamp. "" - это конструктор, который создаёт новый объект типа duration и инициализирует его поле day, в данном случае числом 5. На выходе получаем указатель на объект, представляющий пятидневный интервал. Функция "" берёт текущую системную дату в виде объекта timestamp, возвращённого функцией "", и вычитает из этого времени переданный ей duration. На выходе получаем timestamp, представляющий текущее время минус пять дней.Вот и ожидаешь в обычном коде увидеть что-то вроде:## Код:
```
5 DateDuration.days Date.backFromCurrent
```
который выглядит менее человечно, зато не требуя сильно погружаться в контекст. А скорее, ожидаешь увидеть ещё менее человечный вариант## Код:
```
Date.current 5 DateDuration.days Date.back
```
но который более обобщённый, ведь отсчитывать дни нужно не только от текущей даты, а на все частные случаи не напасёшься.

> -- Цитата:
> Как-то раз попытался добавить в парсер распознавание времени в формате hh:mm:ss, но так и не закончил. Как-нибудь сделаю, тогда можно будет написать 01:15:00 и получить объект duration длиной в один час с четвертью.Но это ведь тоже пример непрактичности, ведь обычно люди создают функции вроде DateDuration.new(hh:01, mm:15, ss: 00) при этом в принципе невозможно сказать, что я пытался написать такую функцию, но пока ещё не закончил. Как упражнение для ума - вполне, но от нормального кода это надо держать подальше.


> -- Цитата:
> кажется, что если мы знаем стек-эффект всех примитивов (сколько каждый потребляет со стека, и сколько после себя оставляет), то вычислить стек-эффект любой их композиции - задача не сложнее подсчёта баланса скобок в строке.До тех пор пока речь не идёт о ветвлениях и циклах, но если язык принуждает держать баланс, то да - просто.