[Haskell-cafe] advice on architecting a library (and haskell software in general)