[Haskell-cafe] Is there already an abstraction for this?