develooper Front page | perl.perl6.language | Postings from December 2001

Re: Apropos of nothing...

Thread Previous | Thread Next
From:
Piers Cawley
Date:
December 13, 2001 15:24
Subject:
Re: Apropos of nothing...
Message ID:
m2adwmiupn.fsf@bofh.org.uk
"Brent Dax" <brentdax@cpan.org> writes:

> Piers Cawley:
> # In the following code fragment, what context is foo() in?
> #
> #     @ary[0] = foo()
>
> The short answer is scalar context.  The long answer is below.  Note
> that the long answer is only the way I think of it.  You may think
> differently.
>
> I like to think of it as 'one context'.  'Scalar' and 'list' no longer
> describe the whole situation.  The way I see it, there are three types
> of context:
> 	-void context (which could just be 0 context)
> 	-N context
> 	-infinite context (which could just be Inf context)
>
> Ihe meaning of each of those should be obvious.  In that case, 'scalar'
> context is really 'one' context.  However, we can still call it scalar
> context if it makes you feel better.  :^)  (Yes, those are just my
> opinions.  They do not necessarily reflect Larry's, Damian's or the guy
> in the padded cell next to mine's.)

Okay. Here's the examples I threw at Dan.

@ary[0] = foo()   # scalar
@ary[1,2] = foo() # list context

@bar = 1;
@ary[@bar] = foo() # ? probably list or maybe scalar...

@bar = (1,2);
@ary[@bar] = foo() # list?

@bar is constant = 1;
@ary[@bar] = foo() # We know at compile time there's only one thing in
                   # @bar. Does that mean foo() is in a scalar context
                   # now?

sub a_scalar { 1 };
sub an_array { my @a = (1,2) }
sub context { wantarray ? (1,2) : 1 }

@ary[a_scalar()] = foo() # ???
@ary[an_array()] = foo() # ???

At around this point, Dan was heard to say 'Mommy, make the bad man go
away!'

@ary[context()]  = foo() # ???

Oh yes, and what context is &context called in?

And, just for laughs:

$ref = [1,2];
@ary[$ref] = foo();      # probably a syntax error

-- 
Piers

   "It is a truth universally acknowledged that a language in
    possession of a rich syntax must be in need of a rewrite."
         -- Jane Austen?

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About