
Just in case it helps anyone's confusion, your equality constraint idea was on a reasonable track. When the ~ symbol appears *in a type signature* it is indeed an equality constraint. But in a pattern expression it's the marker for an irrefutable pattern. Regads,Ben ----- Original Message ----- From: "Alexey Shmalko" To:"Michael Jones" , "" Cc: Sent:Fri, 15 May 2015 01:26:23 +0000 Subject:Re: [Haskell-cafe] Equality Contstraint? 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 [1] On Fri, May 15, 2015 at 4:17 AM Michael Jones 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 [3] http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe [4] Links: ------ [1] http://en.wikibooks.org/wiki/Haskell/Laziness#Lazy_pattern_matching [2] mailto:mike@proclivis.com [3] mailto:Haskell-Cafe@haskell.org [4] http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe