Fun read with the rogue-like! - especially concerning your experiments with avoiding the gameloop via effects, as I’ve been thinking about gameloopy stuff in the context of FRP.
I don’t think the structure you propose scales very well concerning the complexity of extending the game semantics over time, which you also stumbled over - but I guess that wasn’t the intention.
A problem related to what you mentioned about updating other entities life, and having them update their state before they are done sleeping - is that you would need to update your state after each resume of your continuation based on what other entities communicated via the shared state. So in the end the code doesn’t look as elegant, and becomes more errorprone.
If others are interested in the “alternative gameloop” aspects - I implemented a simple browser-game with an Elm-style gameloop using FRP in OCaml some years ago: flappy/flap.ml at master · rand00/flappy · GitHub