<div dir="ltr"><div>I don't know anything about indexed monads, but it seems that you can use the 'where' keyword to rebind (>>) and return for any block you want [1].</div><div><br></div><div>An example from [1]:</div><div><pre class="" style="margin-top:1.625em;margin-bottom:1.625em;padding:4px 0px;border-width:1px 0px;border-top-style:dotted;border-bottom-style:dotted;border-top-color:rgb(217,210,186);border-bottom-color:rgb(217,210,186);vertical-align:baseline;font-stretch:normal;line-height:1.5;color:rgb(17,17,17);font-size:13px!important"><code class="" style="margin:1.625em 0px;padding:0px;border:0px;font-size:1em;vertical-align:baseline;font-stretch:normal;line-height:1.5">addNumbers <span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(6,40,126)">=</span> <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(0,112,32)">do</span>
  <span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(64,160,112)">80</span>
  <span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(64,160,112)">60</span>
  <span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(64,160,112)">10</span>
  <span class="" style="margin:0px;padding:0px;border:0px;font-weight:bold;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(0,112,32)">where</span> (<span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(6,40,126)">>></span>) <span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(6,40,126)">=</span> (<span class="" style="margin:0px;padding:0px;border:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;color:rgb(6,40,126)">+</span>)</code></pre></div><div>It might be possible to generate this where block using TH.</div><div>There is also a quasi-quoter available for indexed-do-notation [2].</div><div><br></div>[1]: <a href="https://ocharles.org.uk/blog/guest-posts/2014-12-06-rebindable-syntax.html">https://ocharles.org.uk/blog/guest-posts/2014-12-06-rebindable-syntax.html</a><br><div>[2]: <a href="https://github.com/fumieval/indexed-do-notation">https://github.com/fumieval/indexed-do-notation</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 23 June 2015 at 00:09, Mark Roberts <span dir="ltr"><<a href="mailto:markandrusroberts@gmail.com" target="_blank">markandrusroberts@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>I have a program that uses both monads and indexed monads, and I'd like to use do-notation for each in the same source file. Is there a way to rebind syntax for only the do blocks that make use of an indexed monad?<br><br></div>Thanks,<br></div>Mark<br></div>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div>Regards</div><div dir="ltr"><div><br></div><div>Sumit Sahrawat</div></div></div></div></div></div></div>
</div>