[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)