Applicative Comprehensions

Simon Peyton Jones simonpj at
Mon Oct 12 09:08:00 UTC 2015

Sounds reasonable to me.   Do-notation and comprehension notation are really just syntactic sugar for the same thing.


From: ghc-devs [mailto:ghc-devs-bounces at] On Behalf Of David A Roberts
Sent: 12 October 2015 09:10
To: ghc-devs at
Subject: Applicative Comprehensions

I raised this question on #haskell, and was advised that this was probably the best place to discuss.
I see that Applicative Do is scheduled for GHC 8.0 [1], and was hoping that this might also enable support for Applicative Comprehensions [2]. Is this likely to be the case? If not, would it be difficult to extend the support for Applicative Do to also handle comprehensions? I'm willing to submit patches if necessary, but I'm not at all familiar with GHC internals, so would need some guidance.
I understand that comprehensions tend not to be used much in idiomatic Haskell, but I find them to be useful for implementing DSLs, so would really like to see this be supported. For example, a matrix could be written in a familiar notation:
> [ i + 2*j | i <- rows, j <- cols ]
which is a little more readable (to those not familiar with Haskell) than
> (\i j -> i + 2*j) <$> row <*> cols

> do { i <- rows; j <- cols; return (i + 2*j) }
David A Roberts<>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the ghc-devs mailing list