[LLVMdev] local lambdas: request for coding standard clarification/judgement call

Sean Silva chisophugis at gmail.com
Tue Apr 15 14:36:28 PDT 2014


On Tue, Apr 15, 2014 at 12:00 PM, David Majnemer
<david.majnemer at gmail.com>wrote:

> Because lambdas can be stateful, they are not simple functions.  I see
> lambdas as a shorthand for writing out a functor.
>
> I would write "Helper" because it is an object of the closure type while
> the function itself is "operator()".
>

I agree with your analysis about "what is a lambda", but I'm not sure it
really captures the intuitive aspect in a lot of cases. The original thing
that got me thinking was a piece of code like this:

  auto eat = [this](TokenKind K, int AdvancePast = 1){
    CurKind = K;
    Buf.advance(AdvancePast);
  };
  switch (Buf.peek()) {
  case ';':
    eat(TokenKind::Semicolon);
    return;

Here the lambda is definitely a verb, as opposed to the helper/Helper
scenario which is a noun, and it seems like verbs should be lowercase. One
possibility is that lambdas are upper-case or lower-case depending on
whether they are verbs or nouns (and cross your fingers that you aren't the
person who writes the clang-tidy check for this convention!).

-- Sean ilva


>
> On Mon Apr 14 2014 at 8:37:14 PM, Duncan Exon Smith <dexonsmith at apple.com>
> wrote:
>
>>
>> > On Apr 14, 2014, at 20:14, Sean Silva <chisophugis at gmail.com> wrote:
>> >
>> > Do local lambdas get named like variables or like functions?
>> >
>> > E.g.
>> >
>> > void foo() {
>> >   auto helper = [](...){...};
>>
>> It should be "help" here (verb), not "helper" (noun), but this is the
>> direction I like.  It's a local function!
>>
>> >   // or
>> >   auto Helper = [](...){...};
>> > }
>> >
>> > My gut is that it should be lowercase (named like a function) since I
>> got a weird feeling in my stomach seeing an upper-case name being called
>> like a function in new code.
>> >
>> > -- Sean Silva
>> > _______________________________________________
>> > LLVM Developers mailing list
>> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140415/b0f0568a/attachment.html>


More information about the llvm-dev mailing list