Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: (tye)Re2: tr doesn't *really* use a list

by chipmunk (Parson)
on Dec 28, 2000 at 00:23 UTC ( #48521=note: print w/replies, xml ) Need Help??

in reply to (tye)Re2: tr doesn't *really* use a list
in thread tr doesn't *really* use a list

Yes, ($a, $b, $c) is a list in that, syntactically, there are some scalars and they are separated by commas. But I don't think that's the interesting sense of 'list' in the context of Perl. In: $x = ($a, $b, $c)
semantically, ($a, $b, $c) do not constitute a list because they are never on the stack together. That's why that code assigns $c to $x, whereas: $x = @a = ($a, $b, $c)
assigns 3 to $x. It is just as easy for someone to get into trouble by not understanding what is meant by a Perl list.

In the documentation, the word 'list' certainly appears in places where it does not mean "a grouping of scalars on the stack". I don't think it follows from that, however, that there cannot be a specific meaning for 'list' as shorthand for 'Perl list'.

Replies are listed 'Best First'.
(tye)Re3: tr doesn't *really* use a list
by tye (Sage) on Dec 28, 2000 at 00:56 UTC

    I don't think saying (to boldly paraphrase you) that "($a,$b,$c) isn't really a List" helps people to understand Perl better. I agree that there is an important concept here. I disagree strongly that you should try to call this concept just "list".

    But you did give me an idea for a "solution". We need a new term for the Perl data structure that is a list of scalar values (like "associative arrays" are now always called "hashes").

    I'm tempted to suggest using this new term in place of "list" in "list context" (to give it more power to replace the existing "list" meme), but I think the "list" in "list context" is intentionally vague since it refers to the "left-hand side" rather than the result returned from the "right-hand side".

    The best candidate I've come up with is "tuple".

    Oh, well, it would never fly. It is much easier to argue that "length(@array)" is stupid and look how much support has been thrown behind the current definition when that has been brought up.

    I'll just continue to use "list of scalar values", "operator that would return a list of scalar values if used in a list context", and "argument list" when I mean of the three most common forms of "Perl List". :-} (I don't yet have a good label for what goes between the parens in a foreach statement -- it is naively a "list of scalar values" but is functionally much more like an "argument list" but calling it the latter would confuse people.)

    Update: I'm toying with "list of scalar [L]values" for "argument list" and foreach. (: (and I have mentioned recently that I hate fonts that make "l"s look like "1"s?)

            - tye (but my friends call me "Tye")

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://48521]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2018-06-17 23:17 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (107 votes). Check out past polls.