On Sun, Dec 28, 2008 at 3:17 PM, Gaal Yahas <[email protected]> wrote:
> Oh, there exist places where list length is useful. Haven't you ever
> done "1 .. @foo" or "unless @foo == 2"?

Sure it's useful. But it's certainly not intuitive.


> I don't really get the "reasonable person" argument. I never met
> anyone (who didn't know C and) thought to write

Larry legitimized the "reasonable person" argument when he established
DWIM as a Perl design principle. It implies that the semantics should
somehow reflect the intent of a typical programmer. I don't think
array-to-scalar conversion is consistent with DWIM.

Of course, Larry also argues that languages should not be designed for
the convenience of newbies. A language is learned once and used many
times; the initial investment in learning it is amortized over time.
So I don't think he has much sympathy for complaints that particular
features confuse beginners.

Jason



> That said, even today I occasionally make mistakes with context, like
> $match = /..(.....)../ or (shudder) $arg = @_. But personally I just
> view these as silly slips that I occasionally make, not as language
> misfeatures. Perl 6 (you knew this was coming) will do away with the
> second error, since parameter handling is no longer manual. I _don't
> want_ to do away with list-to-scalar conversion because it's very
> often useful.
>
> Scalar hash conversion is a whole different matter...
>
> On Sun, Dec 28, 2008 at 3:00 PM, Jason Elbaum <[email protected]> wrote:
>> If you ask me, this is a bug in the semantics of Perl. Based on the
>> principle of Do What I Mean, it's entirely unreasonable for a list in
>> a scalar context to be converted to its length. I can't conceive of
>> any reasonable person who would consider that to be "what they mean"
>> when they write $x = @abc - unless, of course, they're already
>> familiar with Perl's semantics. Not to mention when they write (and
>> lots of confused beginners do this) $x = ( 'abc' ). And not to mention
>> the difference between how we take the length of an array, the length
>> of a string, and the size of a hash.
>>
>> This is perhaps the most blatant instance where DWIM differs from Do
>> What Perl Thinks I Mean. Ideally, it should be deprecated and warned
>> against, but no doubt there's too much live code to make that
>> feasible.
>>
>> Chag sameach,
>>
>> Jason Elbaum
>>
>>
>> On Sun, Dec 28, 2008 at 2:57 PM, Jason Elbaum <[email protected]> wrote:
>>>
>>> If you ask me, this is a bug in the semantics of Perl. Based on the 
>>> principle of Do What I Mean, it's entirely unreasonable for a list in a 
>>> scalar context to be converted to its length. I can't conceive of any 
>>> reasonable person who would consider that to be "what they mean" when they 
>>> write $x = @abc - unless, of course, they're already familiar with Perl's 
>>> semantics. Not to mention when they write (and lots of confused beginners 
>>> do this) $x = ( 'abc' ). And not to mention the difference between how we 
>>> take the length of an array, the length of a string, and the size of a hash.
>>>
>>> This is perhaps the most blatant instance where DWIM differs from Do What 
>>> Perl Thinks I Mean. Ideally, it should be deprecated and warned against, 
>>> but no doubt there's too much live code to make that feasible.
>>>
>>> Chag sameach,
>>>
>>> Jason Elbaum
>>>
>>>
>>>
>>>
>>> On Sun, Dec 28, 2008 at 2:51 PM, Peter Gordon <[email protected]> 
>>> wrote:
>>>>
>>>> I deleted the email, but from what I remember the problem is:
>>>>
>>>> @argv = "123456"
>>>> split("4",@argv)
>>>>
>>>> The context forces @argv to a scalar, much like $n = @argv.
>>>> So the @argv tranlsates to 1.
>>>>
>>>>
>>>> A more convincing example is:
>>>>
>>>> @argv = ("123456") x 123
>>>> split("2",@argv)
>>>>
>>>> results in 1,3
>>>> It is the result of the count of the elements being split.
>>>>
>>>> Peter
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Perl mailing list
>>>> [email protected]
>>>> http://perl.org.il/mailman/listinfo/perl
>>>
>> _______________________________________________
>> Perl mailing list
>> [email protected]
>> http://perl.org.il/mailman/listinfo/perl
>>
>
>
>
> --
> Gaal Yahas <[email protected]>
> http://gaal.livejournal.com/
> _______________________________________________
> Perl mailing list
> [email protected]
> http://perl.org.il/mailman/listinfo/perl
>
_______________________________________________
Perl mailing list
[email protected]
http://perl.org.il/mailman/listinfo/perl

Reply via email to