Здравствуйте, AlexRK, Вы писали:
ARK>Хорошо. Так можно ли вызвать одну функцию из другой и передать ей какие-нибудь данные? Это не противоречит основам функционального программирования?
Зависит от того, что понимать под данными. Функция переданная в качестве аргумента является данным или нет?
BFE>>Сказать по вашему, так это императивного программирования не существует: память компьютера — это эмуляция ленты Машины Тьюринга, инструкция процессора — это программа на функциональном языке, ARK>Почему же, в императивной программе состояние может храниться и извне функций.
Да, может. Но я не понял к чему это написано.
BFE>>Если данные записанные на ленте Машины Тьюринга не состояние программы, то что же тогда состояние программы? ARK>Смотря в каком смысле понимать этот термин. Это может быть срез памяти компьютера в некоторый момент времени. Или набор переменных, гарантированно существующих во время жизни программы. Или еще что-то.
Рассмотрим две программы которые спрашивают у пользователя два числа и выдают результатом их сумму. Одна программа написана на функциональном языке, а другая на императивном. Принципиальная разница между ними следующая: программа написанная на функциональном языке не помнит своего предыдущего состояния и на два заданных числа всегда выдаёт их сумму, а программа написанная на императивном языке может помнить что было раньше и выдавать сумму всех когда либо поданных на ввод чисел, а не только двух последних.
ARK>Однако, ИМХО, абслютно очевидно, что ФП немыслимо без параметров функций. А, значит, через них можно передавать состояние.
Через ФП можно передать состояние.