[Haskell-cafe] Strange quirk with {} syntax?

Mark McConnell mmcconnell17704 at yahoo.com
Thu Nov 30 15:39:04 UTC 2023


 Like others, this caught me by surprise, but now I use it regularly.
I use hlint to advise me on the quality of my Haskell code.  I have learned many, many good ideas from hlint.
As of a few years ago, hlint begins to recommend changing f (A3 _ _ _) = ... to f A3 {} = ... as soon as there are three or more components.
    On Thursday, November 30, 2023 at 09:12:09 AM EST, Brent Yorgey <byorgey at gmail.com> wrote:  
 
 Yes, you're the last to learn about it; we were all wondering when you would figure it out. ;-)
It's definitely "folklore", I can't remember where I first learned about it.  I agree with Tom that it's surprising (but nice) that it works even with data types that were not declared using record syntax.  I also always find it surprising that record update or matching binds more tightly than function application, so that no parentheses are needed.  Sometimes I feel like it would actually look nicer to write 
f (A1 {}) = ...
but then hlint yells at me.  (Yes, I'm aware I can turn off individual hlint warnings. =)
-Brent
On Thu, Nov 30, 2023 at 7:47 AM Noon van der Silk <noonsilk at gmail.com> wrote:

Sometimes I have a type like:
    data A = A1 Int | A2 Int Int
Then if I want to do pattern matching and ignore the parameters I do:
    f (A1 _) = ..    f (A2 _ _) = ...
But that's annoying; I need to remember how many parameters each one has!
Yesterday I learned I can just do this:
    f A1 {} = ...    f A2 {} = ...
And GHC is happy.
Is this expected? Am I the last to learn about this trick?
-- 
Noon van der Silk, ن

http://silky.github.io/

"My programming language is kindness."_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20231130/7540a676/attachment.html>


More information about the Haskell-Cafe mailing list