[Haskell] What is the best way to write adapters?