Use State monad with (Maybe Pole) to be the state

Makes code very elegant - just a sequence of operations is required.
Need to modify the program to use StateT
Added error handling for monad transformers

a non-monad expression is taken,
Decorated with a Identity monad
Then added error handling