
Hello: I am writing a small application which receives HTTP requests, translates them to JSON, and queues the requests using RabbitMQ. I created a Monad transformer stack (ReaderT AppConfig IO a) to carry around my application configuration and AMQP connection handle (MVar Connection within AppConfig), but I am having difficulty determining how to integrate it with my Warp application. The function which is responsible for accepting Requests and returning Responses (app :: Application) needs to call functions which require AppConfig. For example: (sendToRabbitMQ :: RPCRequest -> MyApp ByteString) is a blocking call which requires the AMQP connection handle found within AppConfig, which is why it returns a MyApp ByteString as opposed to a IO ByteString. If I want to call `sendToRabbitMQ' from `app', then the type of `app' needs to change from Application to something else, but I am not sure what that should be. What's the best way to proceed? -- Alex