Re: What's up with %MY?

2001-09-06 Thread Ken Fox
"Bryan C. Warnock" wrote: > Generically speaking, modules aren't going to be running amok and making a > mess of your current lexical scope - they'll be introducing, possibily > repointing, and then possibly deleting specific symbols How much do you want to pay for this feature? 10% slower code?

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Friday 07 September 2001 12:13 am, Ken Fox wrote: > Damian Conway wrote: > > Bzzzt! The line: > > > > %MY::{'$x'} = \$z; > > > > assigns a reference to $z to the *symbol table entry* for $x, not to $x > > itself. > > So I should have said: > > %MY::{'$x'} = $z; > > That's pretty magic

Re: What's up with %MY?

2001-09-06 Thread Ken Fox
Damian Conway wrote: > Bzzzt! The line: > > %MY::{'$x'} = \$z; > > assigns a reference to $z to the *symbol table entry* for $x, not to $x itself. So I should have said: %MY::{'$x'} = $z; That's pretty magical stuff isn't it? Sorry I used the wrong syntax. I'm just taking it from yo

Re: what lexicals do?

2001-09-06 Thread David L. Nicol
Dave Mitchell wrote: > > Here's a list of what any Perl 6 implementation of lexicals must be able to > cope with (barring additions from future apocalyses). Can anyone think of > anything else? I would like perl -le 'my $Q = 3; {local $Q = 4; print $Q}' to print 4 instead of crashing in confu

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Thursday 06 September 2001 07:44 pm, Damian Conway wrote: > Bzzzt! The line: > > %MY::{'$x'} = \$z; > > assigns a reference to $z to the *symbol table entry* for $x, not to $x > itself. So you're saying that the symbol table entry contains a reference to the variable it represents? Oka

Re: What's up with %MY?

2001-09-06 Thread Damian Conway
Bryan thought: > > my $x = 1; > > my $y = \$x; > > my $z = 2; > > %MY::{'$x'} = \$z; > > $z = 3; > > print "$x, $$y, $z\n" > > My $x container contains 1. ($x = 1) > My $y container contains a ref to the $x container. ($x = 1, $y = \$x) > My $z contai

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Thursday 06 September 2001 06:01 pm, Garrett Goebel wrote: > From: Ken Fox [mailto:[EMAIL PROTECTED]] > > > I think we have a language question... What should the following > > print? > > > > my $x = 1; > > my $y = \$x; > > my $z = 2; > > %MY::{'$x'} = \$z; > > $z = 3; > > print "$x

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Thursday 06 September 2001 05:52 pm, Ken Fox wrote: > I think we have a language question... What should the following > print? > > my $x = 1; > my $y = \$x; > my $z = 2; > %MY::{'$x'} = \$z; > $z = 3; > print "$x, $$y, $z\n" > > a. "2, 1, 3" > b. "2, 2, 3" > c. "3, 1, 3" > d. "3, 3

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Thursday 06 September 2001 08:53 am, Dave Mitchell wrote: > But surely %MY:: allows you to access/manipulate variables that are in > scope, not just variables are defined in the current scope, ie > > my $x = 100; > { > print $MY::{'$x'}; > } > > I would expect that to print 100, not 'undef'

RE: What's up with %MY?

2001-09-06 Thread Garrett Goebel
From: Ken Fox [mailto:[EMAIL PROTECTED]] > > I think we have a language question... What should the following > print? > > my $x = 1; > my $y = \$x; > my $z = 2; > %MY::{'$x'} = \$z; > $z = 3; > print "$x, $$y, $z\n" > > a. "2, 1, 3" > b. "2, 2, 3" > c. "3, 1, 3" > d. "3, 3, 3" > e.

Re: What's up with %MY?

2001-09-06 Thread Ken Fox
Dan Sugalski wrote: > On the other hand, if we put the address of the lexical's PMC into a > register, it doesn't matter if someone messes with it, since they'll be > messing with the same PMC, and thus every time we fetch its value we'll Do > The Right Thing. Hmm. Shouldn't re-binding affect onl

Re: What's up with %MY?

2001-09-06 Thread Dan Sugalski
At 02:44 PM 9/6/2001 -0400, Ken Fox wrote: >Could you compile the following for us with the assumption that >g() does not change its' caller? Maybe later. Pressed for time at the moment, sorry. >What if g() *appears* to be safe when perl compiles the loop, but >later on somebody replaces its' de

Re: What's up with %MY?

2001-09-06 Thread Ken Fox
Dan Sugalski wrote: > At 02:05 PM 9/6/2001 -0400, Ken Fox wrote: > >You wrote on perl6-internals: > > > >get_lex P1, $x # Find $x > >get_type I0, P1 # Get $x's type > > > >[ loop using P1 and I0 ] > > > >That code isn't safe! If %MY is changed at run-time, the > >type

RE: What's up with %MY?

2001-09-06 Thread Garrett Goebel
From: Ken Fox [mailto:[EMAIL PROTECTED]] > Dan Sugalski wrote: > > > > I think you're also overestimating the freakout factor. > > Probably. I'm not really worried about surprising programmers > when they debug their code. Most of the time they've requested > the surprise and will at least have a

Re: What's up with %MY?

2001-09-06 Thread Dan Sugalski
At 02:05 PM 9/6/2001 -0400, Ken Fox wrote: >Dan Sugalski wrote: [stuff I snipped] >I'm worried a little about building features with global effects. >Part of Perl 6 is elimination of action-at-a-distance, but now >we're building the swiss-army-knife-of-action-at-a-distance. I don't know how much

Re: what lexicals do?

2001-09-06 Thread Ken Fox
Dave Mitchell wrote: > Can anyone think of anything else? You omitted the most important property of lexical variables: [From perlsub.pod] Unlike dynamic variables created by the C operator, lexical variables declared with C are totally hidden from the outside world, including any calle

Re: What's up with %MY?

2001-09-06 Thread Ken Fox
Dan Sugalski wrote: > I think you're also overestimating the freakout factor. Probably. I'm not really worried about surprising programmers when they debug their code. Most of the time they've requested the surprise and will at least have a tiny clue about what happened. I'm worried a little abo

what lexicals do?

2001-09-06 Thread Dave Mitchell
Here's a list of what any Perl 6 implementation of lexicals must be able to cope with (barring additions from future apocalyses). Can anyone think of anything else? >From Perl 5: * multiple instances of the same variable name within different scopes of the same sub * The notion of intr

Re: What's up with %MY?

2001-09-06 Thread Dan Sugalski
At 11:44 AM 9/6/2001 -0400, Ken Fox wrote: >Yeah, I can see it now. Perl 6 has three kinds of variables: >dynamically scoped package variables, statically scoped lexical >variables and "Magical Disappearing Reappearing Surprise Your >Friends Every Time" variables. Oh, and by the way, lexicals >are

Re: What's up with %MY?

2001-09-06 Thread Dan Sugalski
At 11:51 AM 9/6/2001 -0400, Uri Guttman wrote: > > "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes: > > DS>my $foo = 'a'; > DS>{ > DS> { > DS>%MY[-1]{'$foo'} = 'B'; > DS>print $foo; > DS> } > DS> } > >explain %MY[-1] please. > >my impression

Re: What's up with %MY?

2001-09-06 Thread Uri Guttman
> "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes: DS>my $foo = 'a'; DS>{ DS> { DS>%MY[-1]{'$foo'} = 'B'; DS>print $foo; DS> } DS> } explain %MY[-1] please. my impression is that is illegal/meaningless in perl6. maybe you meant something w

Re: What's up with %MY?

2001-09-06 Thread Ken Fox
Dan Sugalski wrote: > ... you have to take into account the possibility that a > variable outside your immediate scope (because it's been defined in an > outer level of scope) might get replaced by a variable in some intermediate > level, things get tricky. Other things get "tricky" too. How abou

Re: What's up with %MY?

2001-09-06 Thread Dan Sugalski
At 02:19 PM 9/6/2001 +0200, Bart Lateur wrote: >On Tue, 04 Sep 2001 18:38:20 -0400, Dan Sugalski wrote: > > >At 09:20 AM 9/5/2001 +1100, Damian Conway wrote: > >>The main uses are (surprise): > >> > >> * introducing lexically scoped subroutines into a caller's scope > > > >I knew there was

RE: What's up with %MY?

2001-09-06 Thread Garrett Goebel
From: Dave Mitchell [mailto:[EMAIL PROTECTED]] > "Bryan C. Warnock" <[EMAIL PROTECTED]> mused: > > Consider it like, oh, PATH and executables: > > `perl` will search PATH and execute the first perl > > found, but 'rm perl' will not. It would only remove > > a perl in my current scope..., er, dire

Re: What's up with %MY?

2001-09-06 Thread Dave Mitchell
"Bryan C. Warnock" <[EMAIL PROTECTED]> mused: > Consider it like, oh, PATH and executables: > `perl` will search PATH and execute the first perl found, but 'rm perl' will > not. It would only remove a perl in my current scope..., er, directory. But surely %MY:: allows you to access/manipulate v

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
%MY:: manipulates my lexical pad. If, to resolve a variable, I have to search backwards through multiple pads (that's a metaphysical search, so as to not dictate a physical search as the only behavior), that's a different beastie. Consider it like, oh, PATH and executables: `perl` will search

Re: What's up with %MY?

2001-09-06 Thread Dave Mitchell
"Bryan C. Warnock" <[EMAIL PROTECTED]> wrote: > On Thursday 06 September 2001 06:16 am, Dave Mitchell wrote: > > One further worry of mine concerns the action of %MY:: on unintroduced > > variables (especially the action of delete). > > > > my $x = 100; > > { > > my $x = (%MY::{'$x'} = \200, $

Re: What's up with %MY?

2001-09-06 Thread Bart Lateur
On Tue, 04 Sep 2001 18:38:20 -0400, Dan Sugalski wrote: >At 09:20 AM 9/5/2001 +1100, Damian Conway wrote: >>The main uses are (surprise): >> >> * introducing lexically scoped subroutines into a caller's scope > >I knew there was something bugging me about this. > >Allowing lexically scope

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Thursday 06 September 2001 06:16 am, Dave Mitchell wrote: > One further worry of mine concerns the action of %MY:: on unintroduced > variables (especially the action of delete). > > my $x = 100; > { > my $x = (%MY::{'$x'} = \200, $x+1); > print "inner=$x, "; > } > print "outer=$x"; > >

Re: What's up with %MY?

2001-09-06 Thread Bryan C . Warnock
On Thursday 06 September 2001 07:15 am, David L. Nicol wrote: > in file Localmodules.pm: > > use Pollutte::Locally; > use Carp; > > and in blarf.pl: > > sub Carp {print "outer carp\n"}; sub frok { Carp(); } > > { > use Localmodules.pm; >

Re: What's up with %MY?

2001-09-06 Thread David L. Nicol
Damian Conway wrote: > proper lexically-scoped modules. sub foo { print "outer foo\n"}; { local *foo = sub {print "inner foo\n"}; foo(); }; foo(); did what I wanted it to. Should I extend Pollute:: to make this possible: in fi

RE: What's up with %MY?

2001-09-06 Thread Dave Mitchell
One further worry of mine concerns the action of %MY:: on unintroduced variables (especially the action of delete). my $x = 100; { my $x = (%MY::{'$x'} = \200, $x+1); print "inner=$x, "; } print "outer=$x"; I'm guessing this prints inner=201, outer=200 As for my $x = 50; { my $x =

Re: CLOS multiple dispatch

2001-09-06 Thread David L. Nicol
Hong Zhang wrote: > How do you define the currently loaded? If things are lazy loaded, > the stuff you expect has been loaded may not have been loaded. We could load placeholders that go and load the bigger methods as needed, for instance. -- David