I like hyphens. They're easier to type and help prevent_me_from_Doing_This and generating errors because of case sensitivity.
On the other hand, consistency of appearance may be a problem for some people. I often associate code with the way it looks on screen, not necessarily with what it does or says. Looking for some_code_like_this() in a place that uses some-code-like-this() might be troublesome. - sebastian On 11/16/05, Daniel Brockman <[EMAIL PROTECTED]> wrote: > I'm not a Lisp weenie. However, I have always preferred > hyphens over underscores, and I have always preferred > identifiers that use delimiters over camel-cased ones. > > I just think `foo-bar-baz' looks better than `foo_bar_baz'. > Maybe it's the "lexical connotation" of hyphens from natural > language (it joins words), or maybe it's that hyphens fall > more or less on the center of gravity of an identifier, > whereas underscores usually fall beneath the baseline, > making it a purely typographical preference. > > Maybe it's that I like Lisp, Dylan, CSS, XSLT, or some other > language in which hyphens are predominant. But I don't > think that's it, because I like even more languages in which > underscores are predominant. It's simply that I like the > look of the identifiers better in Lisp. > > I realize that lots of people feel the same, only with the > exact opposite viewpoint. It's purely a matter of taste. > > My brother just walked past my monitor, glanced through the > above text and exclaimed, "Yeah, if Perl 6 allowed hyphens > in identifiers, it would be, like, the ultimate language!" > > I don't mean to quote my beloved brother as an authority on > this matter (quite to the contrary, I don't think there are > any authorities, since it's a matter of taste). I just mean > to illustrate that people do feel strongly about this issue. > (And I don't need to tell you that aesthetic aspects play a > serious role in deciding, if not whether a person is going > to end up liking the language, then at least what their > first impression is going to be.) > > So what is my suggestion? Obviously disallowing underscores > and instead allowing hyphens would just replace one problem > with an even worse problem (not only would there still be > people who don't like hyphens, but it would alienate a large > portion of the user base). Therefore, to make the language > more appealing (i.e., less alienating) to the group of > people I am going to refer to as "Lispers", it's obvious > that both characters should be allowed. > > But simply adding hyphen as another character allowed in > identifiers would only superficially solve the problem. > To be sure, it would cause a new group of people, Lispers, > to migrate to Perl 6, and might even case a few long-time > users (any closet Lispers around?) to switch to hyphens. > But it would also doom these two camps to forever remain at > war with one another. > > This is because if you like underscores, you aren't going to > want libraries to use to have hyphens all over the place. > For one thing, it would be plain hell to have to remember > which packages used underscores and which used hyphens. > > Therefore, my suggestion is to allow both characters, but > have them mean the same thing. This concept caused some > confusion on IRC, so let me provide a screenshot: > > sub foo-bar ($x) { say $x } > foo_bar(42); # says 42 > > (image courtesy of luqui on #perl6) > > If you think about it, this makes sense. Just as you are > not forced to use the same indentation style as the authors > of the libraries you use, you should be free to use whichever > word-joiner (subtle hint not intended) you prefer. > > I did not invent this solution. "For convenience," as the > modprobe(1) man page puts it, "there is no difference > between _ and - in module names." As another example, > GObject, the GTK+ object system, uses it to allow > > g_object_set (foo, "bar-baz") and > > g_object_set (foo, "bar_baz") > > as synonymous, which is particularly convenient since there > are so many different language bindings for GObject. > (I should --- since it is advantageous to my case --- point > out that GObject uses hyphens internally.) There are probably > other examples (if you can think of any, please tell). > > Anyway, if we can agree --- without considering the syntactical > implications --- that it is desirable to make these characters > synonymous, we have to look at the implications next. > > The first thing that comes to mind is that some people write > binary minus without surrounding whitespace. Were this > proposal to be accepted, those people would do best to > change habits, lest they be bitten when they try to subtract > the return value of a subroutine call from something. > > What about unary minus? I propose the following: > > -foo-bar === -(foo-bar) === -(foo_bar) > _foo-bar === _foo-bar === _foo_bar > > That is, hyphen and underscore are synonymous in identifiers, > but an initial hyphen is not taken to be part of the identifier. > > I'm not sure about postfix unary minus, however. You could > argue the case both ways (so please do that). > > My gut feeling is that any postfix unary minus is doomed to > be confusing either way, so it might not matter. > > Oh, by the way, I've been using hyphens in my Ruby > identifiers for some time now, and have not ran into any > serious problems. The problems I have ran into are related > to either the modified Ruby mode for Emacs, or to the kludgy > implementation --- I wrote a preprocessor that parses code > looking for identifiers. You can find that here: > > <http://www.brockman.se/software/hyphen-ruby/> > > > Finally, I realize that this is a religious issue, I hope > that I have not stepped on anybody's toes, and I humbly ask > that you approach this discussion with an open mind. > > > Kind regards, > > -- > Daniel Brockman <[EMAIL PROTECTED]> > >