In this video we formalise the definition of an FSM, describe how a machine and its behaviour may be represented in Haskell.
In this video we use lists to represent the sets used in the mathematical definition. In the code for tutorials we use the same ideas, but using Haskell's Data.Set library to represent these sets.