Our enum type ServerState has an underlying int type.
To run the program, save the code in a file named enums.erl and then use the Erlang shell to compile and run it.
The transition function emulates a state transition for a server; it takes the existing state and returns a new state. The server_state_string function returns the string representation of each state, enabling us to print the current state in a human-readable format.