3 ms·
That does shed some insight into why a generic Length is missing, but I agree with the sentiment that it is counter intuitive. It does not read right on a quic
by spathi_fwiffo 11y ago
That does shed some insight into why a generic Length is missing, but I agree with the sentiment that it is counter intuitive. It does not read right on a quick scan, and I think this is especially important in softly typed languages.
If I see string.chars I expect to see a bucket of char, and not the count of chars. That name needs to be more explicit.
- wvenable 11y agoIt's terse which is another curse or benefit of Perl. The less terse method name would be string.numchars or string.charcount.
- deleted 11y ago[deleted]
- kbenson 11y agoI think you are speaking from unfamiliarity with the language and possibly bringing baggage from other languages. In Perl 6, chars is the number of characters in a string, and elems, which is inherited from the Any role, exists on many objects and means the number of elements, as that makes sense for that object. Perl 6 is not softly typed, it's gradually typed. It's as hard as you want to make it. > If I see string.chars I expect to see a bucket of char Why? Is that an expectation that comes from some other language? There's only so much you can expect a language to follow the semantics of other languages. Perl 6 will have it's own quirks, expecting it to conform to some malleable standard based on what some percentage of other languages do is not something I think is entirely fair to expect.
- vvanders 11y agoI think it's a poor selection. <noun>s always has denoted some sort of collection to me and I'm sure you'll see many people have the same confusion.
- dragonwriter 11y ago> Why? Is that an expectation that comes from some other language? No, the convention that (thing that can be viewed as a collection of subelements in several different ways).(plural name for one kind of subelement) is a property/method providing a collection of the subelements of the named type is not only common in other languages, it is also quite common in Perl 6 -- and even followed (aside from chars) in the Str class specifically; examples include (from Str): univals, lines, words, ords chars is the odd man out here: charcount or something similar would have been a lot cleaner. (Yes, its consistent with elems, but that seems to be poorly chosen for the same reason; its a plural name, but it provides a single numeric value.)
- kbenson 11y agoI don't necessarily disagree with your reasoning, but I vaguely recall there was quite a bit of debate about the naming of these methods when they changed, and I don't recall the arguments. I have a feeling it's too late to change them now, so it may just have to live on as a quirk of the language.
- dragonwriter 11y ago> I have a feeling it's too late to change them now, so it may just have to live on as a quirk of the language. I can see that, and I don't think its all that bad, just suboptimal, and confusing based on more than just expectations shaped by other languages.
- acqq 11y agoIn the code I'd make I'd always call these nchars and nelems and it would be intuitively clear (to me too one year after I wrote the code), but Perl 6 seems to like to mess with the accustomed minds. Renaming "for ( ; ; )" which was structurally identical to the C one to the "loop" is easy. Somebody also mentioned renamed ARGV to *ARGS. Examples aplenty. It seems this and a lot of other details were intentionally made to clash with our habits, as I write in my other comment.
- a3n 11y agoIf I had been part of the effort, I would have suggested nchars, nelems, etc. chars and elems sounds to me also like I'm going to get a collection of some kind.