Недавно я поймал ошибку FP (пытаясь выучить Haskell), и меня впечатлило то, что я видел до сих пор (первоклассные функции, ленивая оценка и все остальные лакомства). Я еще не эксперт, но мне уже стало легче рассуждать "функционально", чем императивно для базовых алгоритмов (и у меня проблемы с возвратом туда, где я должен).
Одна область, где текущий FP, кажется, падает, однако, является графическим программированием. Подход Haskell, похоже, состоит в том, чтобы просто обернуть необходимые инструментальные средства GUI (такие как GTK + или wxWidgets) и использовать блоки "do" для имитации императивного стиля. Я не использовал F #, но я понимаю, что он делает что-то подобное, используя OOP с .NET-классами. Очевидно, что для этого есть веская причина - текущее программирование GUI - это все об IO и побочных эффектах, поэтому чисто функциональное программирование невозможно в большинстве современных фреймворков.
Мой вопрос: возможно ли иметь функциональный подход к программированию GUI? Мне трудно представить, как это будет выглядеть на практике. Кто-нибудь знает какие-либо фреймворки, экспериментальные или другие, которые пытаются использовать такие вещи (или даже любые фреймворки, разработанные с нуля для функционального языка)? Или это решение просто использовать гибридный подход, с ООП для частей GUI и FP для логики? (Я просто спрашиваю из любопытства - я бы хотел подумать, что FP - это "будущее", но программирование графического интерфейса похоже на довольно большое отверстие для заполнения.)