<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Feb 18, 2015 at 4:15 PM, Tikhon Jelvis <span dir="ltr"><<a href="mailto:tikhon@jelv.is" target="_blank">tikhon@jelv.is</a>></span> wrote: <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>That said, I tried using SHE's idiom brackets in some of my own existing code and was a bit underwhelmed. They're certainly an improvement for simpler cases, especially ones using operators, but fall apart quickly for more complex expressions. </div></div></div></blockquote><div><br></div><div>My experience with them is pretty close to Tikhon's here, so I'm pretty much neutral on whether we go ahead and do this. Idiom brackets seem to have some strident supporters, I just have never personally had a case where I worked through what the idiom bracket version was and found the result appreciably clearer. When you need to mix in joins and regular application it gets quite messy.</div><div><br></div><div>-Edward</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span class=""><font color="#888888">-tikhon<br></font></span></div><div class=""><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 18, 2015 at 12:20 PM, Elliot Cameron <span dir="ltr"><<a href="mailto:elliot.cameron@covenanteyes.com" target="_blank">elliot.cameron@covenanteyes.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div style="font-family:'trebuchet ms',sans-serif;font-size:12pt;color:rgb(0,0,0)">As a beginner Haskeller, I think my perspective might be surprising: I actually think idiom brackets would make learning and understanding Haskell *easier* for new-comers. Applicative code is intimidating to read for beginners and I have often been afraid to use it because it all seems so magical (lots of strange operators between everything!). But when I read the papers and saw idiom brackets, I suddenly realized that the whole idea was actually pretty simple! I've been pushing for them ever since.<br><br><hr><div style="color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From: </b>"Oliver Charles" <<a href="mailto:ollie@ocharles.org.uk" target="_blank">ollie@ocharles.org.uk</a>><br><b>To: </b>"Haskell Cafe" <<a href="mailto:haskell-cafe@haskell.org" target="_blank">haskell-cafe@haskell.org</a>><br><b>Sent: </b>Wednesday, February 18, 2015 2:46:16 PM<br><b>Subject: </b>[Haskell-cafe] Let's teach GHC idiom brackets!<div><div><br><br><div dir="ltr">Hi friends,<div><br></div><div>Last night I was having a good natter with Chris Done, and the topic of idiom brackets came up. Specifically, Chris' hindent and structured-haskell-mode tools have both recently become aware of the quasiquoter in <a href="http://hackage.haskell.org/package/applicative-quoters" target="_blank">applicative-quoters</a> - allowing one to write ordinary Haskell code but have it formatted/edited as if it wasn't even inside a quasiquoter. However, it's a shame that Chris has to now be aware of this specific quasiquoter just to get his tools to work properly. Furthermore, it's a shame that <i>everyone</i> has to do the same whenever they want to manipulate Haskell code.</div><div><br></div><div>That said, idiom brackets - at least to me - appears to be a very desirable syntax extension. A recent desire for this came to me while working with reactive-banana. As almost everything "interesting" is even an Event or a Behavior, there tends to be a lot of assembling programs with applicative syntax. Another obvious example is when using parser combinators.</div><div><br></div><div>Therefore, I'd like to propose that we teach GHC about this desugaring, properly.</div><div><br></div><div>Now, how we do that, and in fact, what I'm even proposing... that's all up for discussion! I spoke briefly with David Christiansen and a few others in the Idris IRC channel last night about their particular variation of idiom brackets, and it seems people are generally happy with that. Copying that almost verbatim is probably the first proposal I'd put forward.</div><div><br></div><div>This is the first time I've proposed an extension to GHC, so I'll need some guidance to make this happen - both in terms of guiding the discussion through to a proposal, but ultimately implementing it. Perhaps the proposal will be ready for ZuriHac, and some GHC devs could help me work on it there.</div><div><br></div><div>Anyway, that's enough rambling from me. I would love to hear your thoughts - do you think idiom brackets are a good idea? Do you have a particular tricky case that you think they need to support? I'm all ears.</div><div><br></div><div>-- Ollie</div><h2 dir="ltr" style="margin:0px 0px 10px;color:rgb(136,153,166);font-size:14px;font-weight:400;line-height:1;max-width:100%;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;display:inline-block!important;direction:ltr!important;background-color:rgb(245,248,250)"></h2></div>
<br></div></div>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br></div><br></div></div><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>
</div></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" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div></div>