Здравствуйте, VTT, Вы писали:
VTT>Откуда у вас навязчивая идея о противоречиях этих подходов?
см ниже
VTT>Любую императивную программу можно представить как цепочку вызовов функций, каждая из которых принимает на вход единственный аргумент — "глобальное состояние" от предыдущей и возвращает новое "глобальное состояние" соответствующее исполнению одной команды.
Представить можно, но от этого любая императивная программа не становится программой, написанной в функциональном подходе.
VTT>Любую функциональную программу можно представить как последовательность команд.
э, и что?
S>>Ну так вы готовы продемонстрировать ФП на паскале без использования глобального или локального состояния явно?
VTT>"Найдите 10 отличий":
VTT>паскаль
VTT>VTT>function plus_one(x: integer): integer;
VTT>begin
VTT> plus_one := x + 1
VTT>end;
VTT>
VTT>хаскель
VTT>VTT>plus_one :: (Integral x) => x -> Integral
VTT>plus_one x = x + 1
VTT>
Зачем 10? достаточно одно. Во втором примере функция — объект первого класса. Полагаю, что дальше этого примера, ваша демонстрация ФП на паскале не сдвинется.
S>>Если вы здесь не ошиблись, то значит машина Тьюринга демонстрирует нам образцы функционального подхода. См. тезис Тьюринга.
VTT>Наверное мне стоило бы написать "математического формализма c функциями" для ясности (хотя это вроде и так понятно)...
VTT>Если язык основывается на формализме с узлами, то это будет уже узло-ориентированный язык или что-нибудь подобное.
VTT>Но суть в том, что императивные языки по большей части происходят от записи машинных инструкций.
VTT>А функциональные ориентируются на определенные математический формализм, причем по возможности близко к математическим обозначениям.
И вы спрашиваете меня, откуда идея о противоречиях подходов?