У меня есть вопрос о том, как лучше всего разработать программу, над которой я работаю, на Haskell. Я пишу физический симулятор, который я уже много раз делал на стандартных императивных языках, и обычно основной метод выглядит примерно так:
while True:
simulationState = stepForward(simulationState)
render(simulationState)
И мне интересно, как сделать что-то подобное на Haskell. У меня есть функция step :: SimState -> SimState
и функция display :: SimState -> IO ()
, которая использует HOpenGL для рисования состояния симуляции, но я нахожусь в потеря того, как сделать это в своего рода «цикле», поскольку все решения, которые я могу придумать, включают некоторую изменчивость. Я немного нуб, когда дело доходит до Haskell, поэтому вполне возможно, что я упускаю очень очевидное дизайнерское решение. Кроме того, если есть лучший способ спроектировать мою программу в целом, я был бы рад это услышать.
Заранее спасибо!