Можно ли в какой-либо степени эмулировать функциональное реактивное программирование (FRP) на императивном языке?

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

Однако можно ли использовать, скажем, события в C# для достижения аналогичного эффекта, когда изменение некоторых входных значений приводит к каскадному обновлению различных объектов? Или я ответил на свой вопрос, и кроме вариаций паттерна "Наблюдатель" больше ничего сделать нельзя? А как насчет других императивных языков помимо C# (которые я упоминаю здесь только для знакомства)?


person Dulan    schedule 01.05.2014    source источник
comment
Познакомьтесь с реактивными расширениями (Rx) для .NET.   -  person Jonathon Reinhart    schedule 01.05.2014
comment
Наоборот, наличие императивных возможностей облегчает внедрение FRP, но потребность в FRP в императивной объектно-ориентированной среде, где все уже меняется со временем, меньше.   -  person lukstafi    schedule 01.05.2014
comment
Я добавлю, взгляните на FRP в Scala, который беззастенчиво использует императивные функции.   -  person lukstafi    schedule 01.05.2014


Ответы (1)


Реактивное программирование не является специфичным для функциональных языков, точно так же, как функциональное программирование не является специфичным для чисто языков FP. Python, D, C# и многие другие структурные языки/языки ООП допускают код функционального стиля в различной степени, при этом многие другие языки имеют библиотеки FP.

Если вы погуглите, вы найдете реактивные библиотеки для многих языков.

person Llamageddon    schedule 23.01.2015
comment
OP запрашивает конкретно FRP, а не только RP. - person Bergi; 23.01.2015
comment
@Bergi Это вряд ли имеет значение. FRP — это просто RP, выполненный с использованием кода в стиле FP. - person Llamageddon; 23.01.2015
comment
Не совсем. Библиотека RP имеет совершенно другой стиль, так как вы не можете куда-либо отправлять события. - person Bergi; 24.01.2015
comment
Разве это не конкретная деталь реализации, в значительной степени? - person Llamageddon; 24.01.2015
comment
Нет, это дизайнерское решение. И не меньше влияет на дизайн кода вашего приложения. - person Bergi; 24.01.2015