[Haskell-cafe] Applicative banana brackets

Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Wed Dec 9 21:20:30 UTC 2015


On Wed, Dec 09, 2015 at 06:09:21AM +0100, martin wrote:
> while learning about all the type classes and their relationships I came
> across something I found weird.
> If I understand it correctly, banana brackets where originally developed
> for Applicatives. The intent was to enable us to write something like
> 
> (| (\a b c -> a + b + c), [3], [1,2], [5,0,7] |)
> 
> and have it translated to
> 
> liftA3 (\a b c -> a + b + c) [3] [1,2] [5,0,7]
> 
> or alternatively, to allow us to write something like
> 
> (| (pure $ \a b c -> a + b + c), [3], [1,2], [5,0,7] |)
> 
> and have it translated directly to
> 
> pure (\a b c -> a + b + c) <*> [3] <*> [1,2] <*> [5,0,7]
> 
> A variant of banana brackets is implemented in ghc, but only for Arrows
> as part of -XArrowSyntax.

I don't think Arrow banana brackets are related to these Applicative (or
"Idiom") brackets.

Tom


More information about the Haskell-Cafe mailing list