<div dir="ltr"><div><div><div><div><div>Typically it would look something like this:<br><br></div>myApp :: AppConfig -> Application<br><br></div>main = do<br></div>  appConfig <- getAppConfig<br></div>  run 3000 $ myApp appConfig<br><br></div>Within myApp, you can now access the AppConfig value and use runReaderT to unwrap your MyApp transformer.<br></div><br><div class="gmail_quote">On Sat, May 16, 2015 at 3:03 PM Alex <<a href="mailto:alex323@gmail.com">alex323@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello:<br>
<br>
I am writing a small application which receives HTTP requests,<br>
translates them to JSON, and queues the requests using RabbitMQ.<br>
<br>
I created a Monad transformer stack (ReaderT AppConfig IO a) to carry<br>
around my application configuration and AMQP connection handle (MVar<br>
Connection within AppConfig), but I am having difficulty determining how<br>
to integrate it with my Warp application.<br>
<br>
The function which is responsible for accepting Requests and returning<br>
Responses (app :: Application) needs to call functions which require<br>
AppConfig. For example: (sendToRabbitMQ :: RPCRequest -> MyApp<br>
ByteString) is a blocking call which requires the AMQP connection<br>
handle found within AppConfig, which is why it returns a MyApp<br>
ByteString as opposed to a IO ByteString. If I want to call<br>
`sendToRabbitMQ' from `app', then the type of `app' needs to change<br>
from Application to something else, but I am not sure what that should<br>
be.<br>
<br>
What's the best way to proceed?<br>
<br>
--<br>
Alex<br>
_______________________________________________<br>
web-devel mailing list<br>
<a href="mailto:web-devel@haskell.org" target="_blank">web-devel@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/web-devel" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/web-devel</a><br>
</blockquote></div>