module Problem3.Main where import qualified Problem3.QuestionCode as P3Q main = P3Q.main -- (Right 0,Right 1738) {- Motivation: main runs the same program in the two monads Eval1 and Eval2 From 3(a) (Problem3.Eval_expanded) we know that Eval1 gives either an error or a new store. Thus, even if the failure is handled, the modified State will be thrown away. The program will thus return the emptyStore, which is 0. Eval2, on the other hand, always returns the new store, even in the case of error. Thus, the state modification (CMS.put 1738) done before failing propagates through catch and is visible in the result, which is 1738. -}