[HN Gopher] C++: terser (shorter) lambda == SHORTY (ab-use?)
       ___________________________________________________________________
        
       C++: terser (shorter) lambda == SHORTY (ab-use?)
        
       Author : signa11
       Score  : 56 points
       Date   : 2025-04-09 06:15 UTC (3 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | porridgeraisin wrote:
       | That's horrifying
        
         | mbel wrote:
         | To be honest the implementation looks surprisingly readable...
         | at least compared to other horrors like the standard library
         | implementation.
         | 
         | While there are some new rules regarding arguments naming, the
         | new syntax doesn't feel more complex than the default lambda
         | syntax.
         | 
         | So all in all I would say the most horrifying thing here is the
         | fact that the language allows such extensions in the first
         | place ;)
        
       | hsfzxjy wrote:
       | Looks cursed to me.
       | 
       | But TIL dollar sign $ is also valid character for identifiers.
        
         | tempodox wrote:
         | > $ is also valid character for identifiers.
         | 
         | Has been like that in C since forever.
        
           | skullt wrote:
           | It's a common extension but it's not standard. Both C23 and
           | C++23 only allow identifiers to start with a Unicode
           | XID_START character, which excludes $. And with older
           | standards, it was just Latin letters, the underscore, and
           | explicit \u escapes.
           | 
           | If you look in the project's pedantic.cmake, you'll find a
           | add_c_and_cxx_compile_options("-Wno-dollar-in-identifier-
           | extension") just to suppress warnings about this.
        
           | ksherlock wrote:
           | VMS used $ - eg                   sts = sys$getjpiw(0, 0, 0,
           | &jpi_itm_lst, 0, 0, 0);         if ((sts & STS$M_SEVERITY) !=
           | STS$K_SUCCESS)
           | 
           | That might be why GCC originally included $ support.
        
       | pwdisswordfishz wrote:
       | Isn't this basically the obsolete Boost.Lambda?
        
         | beojan wrote:
         | It's like Boost Lambda2 or Boost HOF. Boost Hana also has a
         | similar feature.
         | 
         | This seems to be more fully featured than all of those though.
         | Maybe some could be ported over to Lambda2.
        
       | foxhill wrote:
       | huh. very cute. in the past, i had an idea for terser lambda
       | syntax, similar to C#'s expression body functions - which i did
       | end up implementing in clang:                   auto sum =
       | [](auto a, auto b): a+b;
       | 
       | but this is something else. i didn't think i'd like it at first,
       | but actually i think i might be coming around to it. the.. dollar
       | syntax is regrettable, although it's not a show stopper.
        
       | notpushkin wrote:
       | Neat. Reminds me of https://github.com/dry-python/lambdas
        
         | andrepd wrote:
         | I've always thought this should be first-class syntax in any
         | language with lambdas
        
       | tempodox wrote:
       | As if C++ didn't have enough of "black magic" already, there's
       | another layer of that. Just in case you find error messages
       | involving template applications still too readable.
        
         | fouronnes3 wrote:
         | Little reminder that there once was a "C++ error message
         | competition" [0] where your score was measured as "the size of
         | the error message divided by the size of the source code". The
         | winning entry had a score of 5.9 billion.
         | 
         | [0] https://tgceec.tumblr.com/post/74534916370/results-of-the-
         | gr...
        
       | nialv7 wrote:
       | Not really a new idea. These are expression templates:
       | https://en.wikipedia.org/wiki/Expression_templates
        
       | GrantMoyer wrote:
       | Another idea in this vein, but with a surprisingly
       | straightforward implementation (27 lines):
       | https://github.com/GrantMoyer/lambda_hpp
       | 
       | I started out trying to write something like the OP, but changed
       | direction when I convinced myself there would have been no sane
       | way to implement member call syntax. I honestly can't decide if
       | it's cursed or genuinely useful (minus the unicode name, that's
       | cursed).
        
       | pjmlp wrote:
       | I fail to see the benefit from the lens of C++23.
        
       ___________________________________________________________________
       (page generated 2025-04-12 23:01 UTC)