[Haskell-cafe] Let's teach GHC idiom brackets!
Oliver Charles
ollie at ocharles.org.uk
Thu Feb 19 09:36:17 UTC 2015
Bas van Dijk <v.dijk.bas at gmail.com> writes:
> Do we still need idiom brackets if we have ApplicativeDo?
>
> https://ghc.haskell.org/trac/ghc/wiki/ApplicativeDo
I think they solve different things. ApplicativeDo is a nice extension
when I need to run n different effectful computations, but either use
m < n results (that is, emulating the <* and *> operators), and/or if I
need to return the results in a different order.
For example:
do a <- x
b <- y
c <- z
(b, a)
That's going to be a pain to write using idiom brackets:
(| (\a b _ -> (b, a)) x y z |)
However, for the common case where you do want to apply a function to
the result of all effectful computations, then ApplicativeDo just forces
you to introduce new symbol names:
do x' <- x
y' <- y
z' <- z
f x' y' z'
I'm against this not just due to the extra amount of typing, but
choosing names is often an unnecessary cognitive burden - I've often
already used up the "obvious" name, and now I'm forced to come up with
another set of names, unless I want to live with shadowing warnings (not
an option, I use -Werror).
- Ollie
More information about the Haskell-Cafe
mailing list