While struggling with this problem, I realized the monlithlic style of GameState did not fit the FRP
approach. This was also noticed by Heinrich, who advised me on steps to take to fix that.
Here's a quote from StackOverflow I'd like to talk about.
"First, looking at your code, I find it odd that you have "outsourced" the actual gameplay logic to the monolithic
GameState
type and the
updateGS
function. Now, this is not a bad thing to do, it's just that there is
no benefit from using FRP in this style. You can remove the
makeNetworkDescription
function altogether and register an event handler with
addCommandEvent
by hand instead."
He then goes on to offer some useful details that address the problem articulated in the question, which also gives a general approach about how to do this right.