Они обычно используют нефункциональные аспекты языка (включая изменяемые переменные). Есть ли другие стратегии? Вы могли описать их?
Используют ли они обычно нефункциональные аспекты языка (включая изменяемые переменные)
Многие используют, да.В случае haskell, у которого нет изменяемых переменных или функций с побочными эффектами, они используют монаду ввода-вывода (которая является способом haskell инкапсулировать побочные эффекты) -
Есть ли другие стратегии? Не могли бы вы их описать?
Да, есть. Посмотрите на функциональное реактивное программирование .