develooper Front page | perl.perl6.language | Postings from August 2011

Re: Underscores v Hyphens (Was: [perl6/specs] a7cfe0: [S32] backtracesoverhaul)

Thread Previous | Thread Next
From:
Moritz Lenz
Date:
August 24, 2011 02:52
Subject:
Re: Underscores v Hyphens (Was: [perl6/specs] a7cfe0: [S32] backtracesoverhaul)
Message ID:
4E54C9BA.60401@faui2k3.org
Am 24.08.2011 11:33, schrieb Carl Mäsak:
> Damian (>>>), Moritz (>>), Smylers (>):
>>>> ... why hidden_from_backtrace instead of hidden-from-backtrace?
>>>
>>> ... low-level things are spelled with underscores, while we reserve
>>> the minus character for user-space code.
>>
>> So the idea is that if Perl 6 has an identifier zapeth_clunk itself that
>> leaves zapeth-clunk free to be used by developers to mean something
>> else?
>
> Not much of a problem in Perl 6 in the first place; built-ins from the
> setting are considered to be lexical declarations from a block outside
> of the mainline program code, and any declarations made by the
> developer will just shadow these.
>
> No, my understanding is that the naming convention is there to
> separate stuff API stuff from internals stuff:
>
>    dashes
>      this is part of the Perl 6 API -- feel free to call it
>    underscores
>      this is an internal function -- unless you're doing something
> internal yourself, you shouldn't call it
>
> To me, it has a nice visual mnemonic, since underscores themselves are
> more "low-level".

That's how I understood it too, but wasn't able to phrase it so nicely.

> Of course, it remains to be seen whether this convention is (a)
> useful, (b) correctly guessing the boundaries between API and
> low-level, or even (c) consistently applied within the spec.

(c) is false, I'm quite sure. I'm all for cleaning it up, once we agree 
on a naming scheme

> Damian (>>>), Patrick (>>), Smylers (>):
>>>> I'd like there to be a more consistent approach than that
>>>
>>> +1 to consistency.
>>
>> Could we have underscores and hyphens mean the same thing? That is, Perl
>> 6 always interprets illo-figut and illo_figut as being the same
>> identifier (both for its own identifiers and those minted in programs),
>> with programmers able to use either separator on a whim?
>>
>> That would seem to be the most human-friendly approach.

It's not machine friendly. It means you can't easily dispatch methods by 
looking them up in hash, you first have to name-mangle. And consider how 
often you call methods in Perl 6 (like, all the time), that wouldn't be 
nice at all.

> Maybe, but in my humble opinion that wouldn't promote consistency in
> user code. Also, the name mangling needed to do this would waterbed up
> *somewhere* and likely cause new, interesting kinds of pain.

Like interoperation with other languages. What if you call methods from 
a language that doesn't have this name mangling rule (like, all of 
them)? Suddenly you must be careful where you didn't have to be careful 
before. So a best practice would evolve that you always be careful in 
the first place, and the whole idea is being frowned upon.

Let's take a shortcut, frown upon the idea right now, and don't spec it :-)

Cheers,
Moritz

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About