Have you thought about a clever way to do routing with Concur? I'm planning on using something like servant-router to parse a Servant API in the client and then load the correct corresponding widget, and something like ghcjs-servant-client to generate functions to jump to the route (maybe just by doing a JS History pushState).
Then I think I'd just need a loop at the bottom that listened for changes to the location/history state and loaded the new widget / killing the old one.
But the big downside of this is that whenever I want to route a change I can't use the nice monad flow to do menus like in your example, plus it seems pretty bad to be able to jump to any other route within any widget; it could turn to spaghetti real fast.
Have you thought about a clever way to do routing with Concur? I'm planning on using something like
servant-routerto parse a Servant API in the client and then load the correct corresponding widget, and something likeghcjs-servant-clientto generate functions to jump to the route (maybe just by doing a JS History pushState).Then I think I'd just need a loop at the bottom that listened for changes to the location/history state and loaded the new widget / killing the old one.
But the big downside of this is that whenever I want to route a change I can't use the nice monad flow to do menus like in your example, plus it seems pretty bad to be able to jump to any other route within any widget; it could turn to spaghetti real fast.