Applicative Comprehensions

Roman Cheplyaka roma at ro-che.info
Mon Oct 12 09:14:00 UTC 2015


I like this idea because having the pure function call at the beginning (rather than at the end, as with do-notation) is more consistent with the original <$>,<*>-notation.

It only slightly bothers me that the bracket notation in this form has nothing to do with lists, so that may be a bit confusing. But this is already true for monad comprehensions.

It might make more sense to reuse the parallel list comprehension syntax
(https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/syntax-extns.html#parallel-list-comprehensions),
as applicatives are "parallel". So, [ i + 2*j | i <- rows | j <- cols ].

On 10/12/2015 11:09 AM, David A Roberts wrote:
> 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
> 
> 
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151012/96a02126/attachment.sig>


More information about the ghc-devs mailing list