Applicative Comprehensions

David A Roberts d at vidr.cc
Mon Oct 12 08:09:44 UTC 2015


Hi,

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

or

> do { i <- rows; j <- cols; return (i + 2*j) }

[1] https://ghc.haskell.org/trac/ghc/wiki/Status/GHC-8.0.1#LandedinHEAD
[2]
https://ghc.haskell.org/trac/ghc/wiki/GeneralizedMonadComprehensions#Applicativefunctor

-- 
David A Roberts
https://davidar.io
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151012/c38b91cd/attachment.html>


More information about the ghc-devs mailing list