I think .valid is an excellent argument for underscores all by itself.
Unless you already know what it means you don't have any clue that
its not actualy the word valid instead of val_id.  I don't know of any
other problems like this, but at very least that should be changed.
Don't we still try and follow the rule of least surprise!! ?  I was
realy surprised to find out that valid was value_id, especialy since
the last reference I saw to it was along side defined, undefined, etc,
so I assumed it was related to that.

/me scratches his noggin.

I don't have any other arguments for _, but it would be interesting to
hear the reasoning agianst it.  The builtin versus userdefined is
getting realy blury in p6 anyway so it seems weird to use this as a
way to define it, after all it's not like all user functions WILL have
_ in there name.

On 8/6/06, Ashley Winters <[EMAIL PROTECTED]> wrote:
On 8/6/06, Yuval Kogman <[EMAIL PROTECTED]> wrote:
> Hi,
> Audrey mentioned that Perl 6 is trying to avoid underscores in the
> core library.
> It came up when I asked why "valid" isn't called "value_id" because
> if ( $user_input.valid ) { } reads fairly confusingly.
> So, a few questions:
> 1. what is the "official" naming style for the Pelr 6 standard
> library (not just functions, but methods for core objects, the MOP,
> the compiler toolchain, the truely absolutely core modules, etc).
> 2. What is bad about underscores? From what I know most people tend
> to think that $object.do_that_action is the clearest way of naming
> methods, and the technical reasons to avoid these (long symbol
> names, lots of typing) are no longer really valid nowadays (with
> editor autocompletion, etc).

Nothing is wrong with underscores. In fact, under_scores and
camelCase/StudlyCaps should be encouraged I<in user code>. When you
see function_name() or functionName() or _functionname(), it should be
obvious to any Perl programmer that it's *not* a standard Perl
function -- it's a user/module function. When you see SCARYCAPS, you
should expect out-of-band implicit (action-at-a-distance) behaviour
from whatever code it in it.

Think of underscores and caps as a form of twigil. $scalar, @array,
%hash, &sub, &_internal, &userFunction, &user_function,
&RefugeeWindowsProgrammer, &Let_There_Be_Poetry, &MAGIC,

And, just like $scalars can hold arrays, &somesub could be a standard
function or a user function (or a standard function which a user
reimplemented -- you never know).

- Ashley Winters

Eric Hodges

Reply via email to