State rewrite Instead of using our own State type, we use Arrow's Either. We also decouple Progression from State.