Our enum type ServerState has an underlying int type.
To run the code, evaluate it using a Common Lisp implementation like SBCL, CLISP, or another compliant interpreter.
The transition function emulates a state transition for a server; it takes the existing state and returns a new state based on input. Each state is represented by an integer constant, and human-readable string names are stored in a hash table. The state-name-str function converts state values to their string representations.