Example of arithmetic expression parsing, with decoding of semantic values (ie it gives a list of possible results of computation). BUT: it runs the computations under a monad. In this example, certain cases of addition fail, which are caught and shown as zeros. "make run" to run the test case. For Hugs, load up Hugs.lhs - it doesn't produce graphs, and has easy entry point "test :: String -> IO ()