[Haskell] Smash along your boilerplate; how to traverse a non-existent term