Hobby project for implementing different state machines in Haskell