<p dir="ltr"> I'm very much in the "Damn the torpedoes; full speed ahead" camp most of the time, but not here. Transformers is a tiny step up from base. Why would you make it depend on template haskell rather than the other way around?</p>
<div class="gmail_quote">On Jul 23, 2015 12:17 PM, "Ryan Scott" <<a href="mailto:ryan.gl.scott@gmail.com">ryan.gl.scott@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Template Haskell currently has runIO :: IO a -> Q a , which allows you<br>
to run IO actions with a guarantee of IO effects' ordering in a single<br>
splice (but not necessarily the order in which all the Q splices are<br>
run). If runIO is indeed a monad morphism, then there is a law-abiding<br>
MonadIO Q instance that could be added to transformers:<br>
<br>
instance MonadIO Q where<br>
  liftIO = runIO<br>
<br>
This would be useful for dealing with monad transformer stacks with Q<br>
as the base monad (for an example, see genifunctors<br>
(<a href="https://github.com/danr/genifunctors/blob/4677bb57423b1b380ce9b50cc3d765a5c49a957a/Data/Generics/Genifunctors.hs#L47" rel="noreferrer" target="_blank">https://github.com/danr/genifunctors/blob/4677bb57423b1b380ce9b50cc3d765a5c49a957a/Data/Generics/Genifunctors.hs#L47</a>).<br>
The only catch is that transformers would have to depend on<br>
template-haskell. I think this would be okay since no quasiquotation<br>
is involved, but I wanted to hear others' opinions.<br>
<br>
Ryan<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>