Create API clients with a DSL in Haskell