[Haskell-cafe] Partial application in case expression rules

Stephen Tetley stephen.tetley at gmail.com
Mon Nov 5 22:15:44 CET 2012


Whoops - replied in haste...

There is a long extant GHC extension to elide constructor arguments

f (Leaf {}) = ...
f (Node {}) = ...

There is a recent extension for "lambda case" which you were also
using and I didn't look closely at.

On 5 November 2012 21:11, Stephen Tetley <stephen.tetley at gmail.com> wrote:
> There's a Glasgow extension that gets you to this:
>
> treeFold :: (a -> a -> a) -> Tree a -> a
> treeFold f = \case
>   Leaf {} ->  id
>   Node {} -> f `on` treeFold f
>
> Or maybe this if parens are needed:
>
> treeFold :: (a -> a -> a) -> Tree a -> a
> treeFold f = \case
>   (Leaf {}) ->  id
>   (Node {}) -> f `on` treeFold f



More information about the Haskell-Cafe mailing list