Hi, Michael,

It's irrefutable pattern - the pattern that matches lazily. You can get more info here [1].

Hope this helps,
Alexey Shmalko

[1]: http://en.wikibooks.org/wiki/Haskell/Laziness#Lazy_pattern_matching

On Fri, May 15, 2015 at 4:17 AM Michael Jones <mike@proclivis.com> wrote:
I am poking around in Arrow to understand it better. There is the following definition:

    second :: a b c -> a (d,b) (d,c)
    second f = arr swap >>> first f >>> arr swap
      where
        swap :: (x,y) -> (y,x)
        swap ~(x,y) = (y,x)

Can someone explain what the ~ is? Searching the net resulted in frustration.

I kind of think it is some kind of equality constraint but can’t find documentation. Perhaps if I knew what it was called I might succeed in finding something. If it is an equality constraint, please provide a reference if you have one. I did not find anything in a search including GHC, etc.

Thanks
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe