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