Looking at (LR, maybe SGLR?) parsing by implementing some in Haskell