[Haskell-beginners] Generalizing traversal of expressions with changes on specific nodes