<div><div dir="auto">That’s called an as-pattern. It binds part of the pattern match to a variable. In this case you might want to do that for efficiency reasons. </div></div><div dir="auto"><br></div><div dir="auto">You can find an example of them here:</div><div><div><a href="https://www.haskell.org/tutorial/patterns.html">https://www.haskell.org/tutorial/patterns.html</a></div><div dir="auto"><br></div><div dir="auto">I think your example isn’t correct, the `us` variable is only defined for the last clause. The first two should use `compress ys`. </div><div dir="auto"><br></div><div dir="auto">Without as-patterns this would look like:</div><div dir="auto"><br></div><div dir="auto"><div dir="auto">compress (x:y:ys’)</div><div dir="auto">| x==y = compress (y:ys’)</div><div dir="auto">| otherwise = x : compress (y:ys’)</div><div dir="auto">compress us = us</div></div><div dir="auto"><br></div><div dir="auto">It can be more efficient and concise to use ys@(y:_) in the pattern match and ys elsewhere  instead of having to repeat (y:ys’) which without optimizations would call the : constructor again and may not share memory in the same way. </div><div dir="auto"><br></div><div dir="auto">-bob</div><div dir="auto"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 27, 2019 at 07:31 Yugesh Kothari <<a href="mailto:kothariyugesh@gmail.com">kothariyugesh@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">This is probably a stupid question but I can't seem to understand the use of @ in haskell pattern matching.<div dir="auto"><br></div><div dir="auto">Ex -</div><div dir="auto">compress (x:ys@(y:_))</div><div dir="auto">| x==y = compress us</div><div dir="auto">| otherwise = x : compress us</div><div dir="auto">compress us = us</div><div dir="auto"><br></div><div dir="auto">Thanks!</div><div dir="auto"><br></div></div>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div></div>