簡単に考えるのならば
ユーザの入力等のイベントと現在の状態を引数に新しい状態を返す関数を実装します
その関数を繰り返し呼べばいいのです