[Haskell-cafe] ~ operator ?

Patrick Palka patrick at parcs.ath.cx
Mon Feb 18 20:19:27 CET 2013


The difference the ~ makes in this case is that `uncurry4 (\_ _ _ _ -> ())
undefined` evaluates to `()` instead of bottom. The ~ is called an
irrefutable pattern, and it helps make code that pattern matches on
constructors more lazy. This seems like a good explanation of the subject:
http://en.wikibooks.org/wiki/Haskell/Laziness#Lazy_pattern_matching

On Mon, Feb 18, 2013 at 2:02 PM, <briand at aracnet.com> wrote:

> Hi all,
>
> I was creating "bigger" uncurries which I am simply extending from an
> existing uncurry I found some where, e.g.
>
> uncurry4 :: (a -> b -> c -> d -> e) -> ((a, b, c, d) -> e)
> uncurry4 f ~(a,b,c,d) = f a b c d
>
> when I realized, what's the "~" for ?
>
> I've only been able to find a partial explanation that it involves
> preserving laziness, or something, maybe ?
>
> I was hoping someone could enlighten me.
>
> Thanks
>
> Brian
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130218/6765df6e/attachment.htm>


More information about the Haskell-Cafe mailing list