[Haskell-cafe] Let's teach GHC idiom brackets!
ollie at ocharles.org.uk
Wed Feb 18 19:46:16 UTC 2015
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 applicative-quoters
<http://hackage.haskell.org/package/applicative-quoters> - 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 *everyone* has to do the same whenever they
want to manipulate Haskell code.
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.
Therefore, I'd like to propose that we teach GHC about this desugaring,
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.
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.
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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe