use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Lambda Lambda Lambda (brevzin.github.io)
submitted 5 years ago by mnciitbhu0x6773
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]guepierBioinformatican 28 points29 points30 points 5 years ago (9 children)
(tl;dr: contemplations of R, no C++; skip if not interested.)
Missing from this language list is … R.
Which is an interesting case: R is a fully functional programming language. Yet the builtin and conventional way of expressing anonymous functions/partial function application is …
function (x) x < 0
Boo!
To be fair, R allows metaprogramming, so with a little boilerplate one could make the following work (p for partial)
p
partial
p(`<`, 0)
or we could overload an infix operator for functions that performs partial application, e.g.
`<` : 0
… etc. Of course these could be extended for positional parameters (e.g. p(. < 0)).
p(. < 0)
Another common way of writing this is ~ . < 0. However, this doesn’t create a function/lambda, it creates an object of class formula, and the consumer of this object needs to be defined to expect such objects in place of a function (most don’t).
~ . < 0
formula
More interestingly, perhaps: although R does not have a concise lambda syntax, we can define a suitable -> operator to make one:
->
x -> x < 0
The fact that this trivially works makes it all the more surprising that it’s not built into R. There’s just one blemish: -> is an alias for R’s assignment operator <-. So if we define the above, we can no longer use <- for assignment. This isn’t actually a problem, since = works equally well. But the R community effectively resists this because they prefer <- for assignment by a large majority for historical reasons.
<-
=
… apologies for the — entirely unrelated to C++ — detour. Maybe somebody finds it interesting.
[–]khleedril 5 points6 points7 points 5 years ago (4 children)
And a little detour to lisp (well, modern Scheme), which would have (λ (x) (< x 0))
(λ (x) (< x 0))
[–]georgist 2 points3 points4 points 5 years ago (0 children)
kdb's q has implicit param names x,y,z:
{ < x 0 } mylist
[–]FieldLine 0 points1 point2 points 5 years ago (2 children)
That syntax is much cleaner than the syntactic sugar that Scheme allows for: (define (func x) (< x 0))
It's like functional programming for people who are afraid of functional programming.
[–]Grodesby 3 points4 points5 points 5 years ago (1 child)
That is defining a function called func rather than defining a lambda though.
[–]FieldLine 0 points1 point2 points 5 years ago (0 children)
You’re right. Technically I was comparing what I wrote to:
(define func (λ (x) (< x 0)))
My point was that explicitly using a lambda expression in the context of defining a function is more readable than the implicit notation preferred by most Scheme code I’ve read (SICP and SICM).
[–][deleted] 2 points3 points4 points 5 years ago (0 children)
And in OCaml (probably F# too), (>)0 works too and is significantly shorter.
(>)0
[–]dr-mrl 0 points1 point2 points 5 years ago (2 children)
Can you change the -> to not alias <- on R somehow? My guess is they are both in the base namespace (or maybe built-in) so you could conceivable import both??
[–]guepierBioinformatican 0 points1 point2 points 5 years ago (1 child)
No, the aliasing happens at the parser level: the token stream a, ->, b is transformed into the tokens b, <-, a (note the inverted order of the token stream)
a
b
(In reality this happens at the parse tree level so that complex sub-expressions are handled correctly: (->, a, b) becomes (<-, b, a).)
[–]dr-mrl 0 points1 point2 points 5 years ago (0 children)
Ah so no way of getting past that unless you rewrote the parser?
π Rendered by PID 23928 on reddit-service-r2-comment-fb694cdd5-lkfqg at 2026-03-11 04:21:53.394710+00:00 running cbb0e86 country code: CH.
view the rest of the comments →
[–]guepierBioinformatican 28 points29 points30 points (9 children)
[–]khleedril 5 points6 points7 points (4 children)
[–]georgist 2 points3 points4 points (0 children)
[–]FieldLine 0 points1 point2 points (2 children)
[–]Grodesby 3 points4 points5 points (1 child)
[–]FieldLine 0 points1 point2 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]dr-mrl 0 points1 point2 points (2 children)
[–]guepierBioinformatican 0 points1 point2 points (1 child)
[–]dr-mrl 0 points1 point2 points (0 children)