Hacker News new | ask | show | jobs
by analognoise 860 days ago
What tool do you recommend to do so?
2 comments

Just look for state-machine (finite state automata) on github

https://github.com/search?q=state-machine&type=repositories

This is a very common pattern in Ruby to manage state. It's especially useful to guard entering impossible states with respect to business logic and figuring out what went wrong. Something along the lines of:

    Can't transition Command from 'ordered' to 'to-deliver': paid() == false
look at this gem https://github.com/pluginaweek/state_machine to get an idea of what features are possible
Sum type is key, called "discriminated union" sometimes generally. In Rust this is an `enum`. Simulated in some languages as tuples with tag first element. Discrete number of states, attaching information only relevant to each single state. Thus, never have invalid combination of other fields.
I think in this context 'state' means 'state which changes over time', not necessarily the shape of the state at rest.

Turning it off and on again will fix mutable state, not poorly-typed state.