Проектирование программы в Haskell: как выполнять моделирование без изменчивости

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

while True:
  simulationState = stepForward(simulationState)
  render(simulationState)

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

Заранее спасибо!

23
задан Haldean Brown 3 March 2012 в 18:55
поделиться