a universal printer for Haskell?