Re: identity tests and comparing two references [PATCH for S06 and A06]

2005-04-17 Thread Patrick R. Michaud
On Tue, Apr 12, 2005 at 06:22:13PM +0200, Thomas Sandlaß wrote: I've edited the above syntax into S06 and A06. The two patches are attached but I don't know if you are the right one to sent them to. Whom should I sent such patches? I just saw you applying other patches as well. Applied,

Re: identity tests and comparing two references

2005-04-07 Thread Thomas Sandlaß
Austin Hastings wrote: So if $$ref gives the 'all the way down' behavior, how do I get just one layer down dereferencing? How about: my XMLnode $x = parseXML( file.xml ); do_something( $x.down.down.down.item[17].up.up.body.down.down ); Details of class XMLnode and friends left as an excercise ;)

Re: identity tests and comparing two references

2005-04-07 Thread Thomas Sandlaß
Larry Wall wrote: : Is a closure return type indicated with this siglet syntax, too? : : sub foo :(Str,Int) of :(Any) {...} You would need :() only to group multiple siglets into a single type. So an Any can stand on its own. Ohh, interessting! I wanted to express a return value type that is a

Re: identity tests and comparing two references

2005-04-06 Thread Thomas Sandlaß
Larry Wall wrote: Yes. It should complain that = is not a valid type signature. Any foo (or foo:...) followed by ... should be parsed as a single term selecting the function that MMD would dispatch to given that type signature. And I guess it's not allowed to have interspersed whitespace unless

Re: identity tests and comparing two references

2005-04-06 Thread Luke Palmer
Thomas Sandla writes: Larry Wall wrote: Yes. It should complain that = is not a valid type signature. Any foo (or foo:...) followed by ... should be parsed as a single term selecting the function that MMD would dispatch to given that type signature. And I guess it's not allowed to have

Re: identity tests and comparing two references

2005-04-06 Thread Larry Wall
On Wed, Apr 06, 2005 at 04:31:08PM +0200, Thomas Sandlaß wrote: : Larry Wall wrote: : Yes. It should complain that = is not a valid type signature. : Any foo (or foo:...) followed by ... should be parsed as a single : term selecting the function that MMD would dispatch to given that : type

Re: identity tests and comparing two references

2005-04-06 Thread Larry Wall
On Wed, Apr 06, 2005 at 10:07:33AM -0600, Luke Palmer wrote: : Thomas Sandlaß writes: : Larry Wall wrote: : Yes. It should complain that = is not a valid type signature. : Any foo (or foo:...) followed by ... should be parsed as a single : term selecting the function that MMD would dispatch

Re: identity tests and comparing two references

2005-04-06 Thread Thomas Sandlaß
HaloO Larry, you wrote: for ordinary functions. If it gets really popular people might even start writing: sub foo :(Str,Int) {...} I like it, but that could mean it will not become popular :)) And this is also nice: sub foo :(Str,Int) of Str {...} Is a closure return type indicated with this

Re: identity tests and comparing two references

2005-04-06 Thread Larry Wall
On Mon, Apr 04, 2005 at 06:50:11PM +0200, Thomas Sandlaß wrote: : Juerd wrote: : And will Perl 6 reference values rather than their containers, that is: : will \$foo differ when $foo gets a new value, just as in Python id(foo) : changes after foo += 1? : : Depends on the definition of the

Re: identity tests and comparing two references

2005-04-06 Thread Juerd
Larry Wall skribis 2005-04-06 11:10 (-0700): $$ref follow the ref list to the actual object. my $foo; my $bar = \$foo; my $quux = \$bar; my $xyzzy = \$quux; How then, with only $xyzzy, do you get $bar? $$xyzzy would follow until $foo. I don't like this at all.

Re: identity tests and comparing two references

2005-04-06 Thread Larry Wall
On Wed, Apr 06, 2005 at 07:22:48PM +0200, Thomas Sandlaß wrote: : HaloO Larry, : : you wrote: : for ordinary functions. If it gets really popular people might : even start writing: : : sub foo :(Str,Int) {...} : : I like it, but that could mean it will not become popular :)) : And this is

Re: identity tests and comparing two references

2005-04-06 Thread Larry Wall
On Wed, Apr 06, 2005 at 08:24:23PM +0200, Juerd wrote: : Larry Wall skribis 2005-04-06 11:10 (-0700): : $$ref follow the ref list to the actual object. : : my $foo; : my $bar = \$foo; : my $quux = \$bar; : my $xyzzy = \$quux; : : How then, with only $xyzzy, do you get

Re: identity tests and comparing two references

2005-04-06 Thread John Macdonald
On Wed, Apr 06, 2005 at 11:30:35AM -0700, Larry Wall wrote: If you want to help, earn a billion dollars and write me into your will. And then peg out. Nothing personal. :-) Larry Darn. So far, I'm, 0 for 3 on that plan. However, I promise that item two will follow very shortly in time

Re: identity tests and comparing two references

2005-04-06 Thread Austin Hastings
Larry Wall wrote: On Wed, Apr 06, 2005 at 08:24:23PM +0200, Juerd wrote: : Larry Wall skribis 2005-04-06 11:10 (-0700): : $$ref follow the ref list to the actual object. : : my $foo; : my $bar = \$foo; : my $quux = \$bar; : my $xyzzy = \$quux; : : How then, with only $xyzzy,

Re: identity tests and comparing two references

2005-04-06 Thread Patrick R. Michaud
On Wed, Apr 06, 2005, Larry Wall wrote: I think it's time to break out the colon again and use something like: infix:+:(Complex, Complex); or foo:(Str,Int) for ordinary functions. If it gets really popular people might even start writing: sub foo :(Str,Int) {...}

Re: identity tests and comparing two references

2005-04-06 Thread Juerd
Larry Wall skribis 2005-04-06 11:37 (-0700): : my $foo; : my $bar = \$foo; : my $quux = \$bar; : my $xyzzy = \$quux; : How then, with only $xyzzy, do you get $bar? $$xyzzy would follow until : $foo. I don't like this at all. You can't get at $bar anyway. You can only get at

Re: identity tests and comparing two references

2005-04-06 Thread Aaron Sherman
On Wed, 2005-04-06 at 14:37, Larry Wall wrote: On Wed, Apr 06, 2005 at 08:24:23PM +0200, Juerd wrote: : Larry Wall skribis 2005-04-06 11:10 (-0700): : $$ref follow the ref list to the actual object. : : my $foo; : my $bar = \$foo; : my $quux = \$bar; : my $xyzzy =

Re: identity tests and comparing two references

2005-04-06 Thread Larry Wall
On Wed, Apr 06, 2005 at 02:43:55PM -0500, Patrick R. Michaud wrote: : On Wed, Apr 06, 2005, Larry Wall wrote: : I think it's time to break out : the colon again and use something like: : : infix:+:(Complex, Complex); : : or : : foo:(Str,Int) : : for ordinary functions. If

Re: identity tests and comparing two references

2005-04-05 Thread Thomas Sandlaß
Juerd wrote: Thomas Sandlaß skribis 2005-04-04 18:50 (+0200): In particular what does infix=Scalar of Ref of Ref of Int,Int do? Depends. What does it mean? :) Specifically, what is infix, what is =? Ups, a missing : warps this to a completly different meaning! Comparing a coderef infix with the

Re: identity tests and comparing two references

2005-04-05 Thread Larry Wall
On Tue, Apr 05, 2005 at 06:38:43PM +0200, Thomas Sandlaß wrote: : Ups, a missing : warps this to a completly different meaning! : Comparing a coderef infix with the comparison operator = : to the word list 'Scalar of Ref of Ref of Int,Int'. : : I tried to ask what infix:=Scalar of Ref of Ref of

Re: identity tests and comparing two references

2005-04-04 Thread Thomas Sandlaß
Juerd wrote: my $four := three; Assuming you meant $three instead of three. Indeed. Sorry. my $five = 5; $four = 4; # $one == 4 now? No, $four (and thus $three, which it is bound to) is now 4. $three is a reference, which is a value, which is now *replaced* with the new value. OK. Then you need

Re: identity tests and comparing two references

2005-04-04 Thread Juerd
Thomas Sandlaß skribis 2005-04-04 18:50 (+0200): In particular what does infix=Scalar of Ref of Ref of Int,Int do? Depends. What does it mean? :) Specifically, what is infix, what is =? 'Scalar of Ref of Any' without dispatching to 'Ref of Int'. That means References and aliasing should have

Re: identity tests and comparing two references

2005-04-02 Thread Juerd
James Mastros skribis 2005-04-01 22:48 (+0200): $x = 42; $a = \$x but false; $b = \$y but blue; $a =:= $b ??? Even without the buts, that is: $x = 42; $a = \$x; $b = \$x; I strongly believe that $a =:= $b must be false. Assignment copies! $a =:= $b should be true only if $a and

Re: identity tests and comparing two references

2005-04-02 Thread Leopold Toetsch
Larry Wall [EMAIL PROTECTED] wrote: : On Thu, 2005-03-31 at 23:46 -0800, Darren Duncan wrote: : : In P6, an object is a data-type. It's not a reference, and any member : payload is attached directly to the variable. Well, it's still a reference, but we try to smudge the distinction in P6. A

Re: identity tests and comparing two references

2005-04-02 Thread Larry Wall
On Sat, Apr 02, 2005 at 11:06:01AM +0200, Juerd wrote: : Is your view of the world like Python or like Perl 5? Them's fightin' words. :-) : Values have no identity in Perl 5. That's slightly not true, insofar as Perl 5 distinguishes hash keys by value (albeit filtered through stringification).

Re: identity tests and comparing two references

2005-04-02 Thread Larry Wall
On Sat, Apr 02, 2005 at 11:22:43AM +0200, Leopold Toetsch wrote: : Larry Wall [EMAIL PROTECTED] wrote: : : On Thu, 2005-03-31 at 23:46 -0800, Darren Duncan wrote: : : : : In P6, an object is a data-type. It's not a reference, and any member : : payload is attached directly to the variable. : :

Re: identity tests and comparing two references

2005-04-01 Thread Aaron Sherman
On Thu, 2005-03-31 at 23:46 -0800, Darren Duncan wrote: What I want to be able to do is compare two references to see if they point to the same thing, in this case an object, but in other cases perhaps some other type of thing. Let's be clear about the difference between P5 and P6 here. In

Re: identity tests and comparing two references

2005-04-01 Thread Larry Wall
On Thu, Mar 31, 2005 at 11:46:22PM -0800, Darren Duncan wrote: : So, what is the operator for reference comparison? The =:= operator is almost certainly what you want here. Larry

Re: identity tests and comparing two references

2005-04-01 Thread Luke Palmer
Sam Vilain writes: Darren Duncan wrote: Now I seem to remember reading somewhere that '===' will do what I want, but I'm now having trouble finding any mention of it. So, what is the operator for reference comparison? As someone who wrote a tool that uses refaddr() and 0+ in Perl 5 to

Re: identity tests and comparing two references

2005-04-01 Thread Larry Wall
: On Thu, 2005-03-31 at 23:46 -0800, Darren Duncan wrote: On Fri, Apr 01, 2005 at 08:04:22AM -0500, Aaron Sherman wrote: : : What I want to be able to do is compare two references to see if they : point to the same thing, in this case an object, but in other cases : perhaps some other type

Re: identity tests and comparing two references

2005-04-01 Thread Larry Wall
On Fri, Apr 01, 2005 at 08:39:52AM -0700, Luke Palmer wrote: : I'm pretty sure that =:= does what you want. If you have two scalar : references, you might have to spell it like this: : : $$x =:= $$y Unnecessary, I think. I want $x =:= @y to tell me whether the reference in $x is to

Re: identity tests and comparing two references

2005-04-01 Thread Aaron Sherman
On Fri, 2005-04-01 at 10:46, Larry Wall wrote: On Fri, Apr 01, 2005 at 08:04:22AM -0500, Aaron Sherman wrote: : In P6, an object is a data-type. It's not a reference, and any member : payload is attached directly to the variable. Well, it's still a reference, but we try to smudge the

Re: identity tests and comparing two references

2005-04-01 Thread Darren Duncan
At 7:37 AM -0800 4/1/05, Larry Wall wrote: On Thu, Mar 31, 2005 at 11:46:22PM -0800, Darren Duncan wrote: : So, what is the operator for reference comparison? The =:= operator is almost certainly what you want here. Larry Thanks to everyone for their answers. Last night I started coding with =:=

Re: identity tests and comparing two references

2005-04-01 Thread Juerd
Larry Wall skribis 2005-04-01 7:47 (-0800): : $$x =:= $$y Unnecessary, I think. I want $x =:= @y to tell me whether the reference in $x is to the same array as @y. But my $foo; my $bar := $foo; my $baz = \$foo; $foo :=: $bar; # true $foo :=: $baz; # also

Re: identity tests and comparing two references

2005-04-01 Thread Juerd
Juerd skribis 2005-04-01 22:35 (+0200): $foo :=: $bar; # true $foo :=: $baz; # also true?! IMO, :=: should not auto(de)reference. s:g/:=:/=:=/ Juerd -- http://convolution.nl/maak_juerd_blij.html http://convolution.nl/make_juerd_happy.html http://convolution.nl/gajigu_juerd_n.html

Re: identity tests and comparing two references

2005-04-01 Thread Juerd
Thomas Sandlaß skribis 2005-04-01 23:37 (+0200): Juerd wrote (with substitution applied): IMO, =:= should not auto(de)reference. So you expect $bar to contain value 2 and detach from $foo? No. But if you said $baz instead of $bar, then yes. How would one then reach the value in $foo? With

Re: identity tests and comparing two references

2005-04-01 Thread Thomas Sandlaß
HaloO Juerd, you wrote: Thomas Sandlaß skribis 2005-04-01 23:37 (+0200): So you expect $bar to contain value 2 and detach from $foo? No. But if you said $baz instead of $bar, then yes. Ohh sorry, I mis-read your mail as talking about chains of references: $baz to $bar to $foo to 2. The last step

Re: identity tests and comparing two references

2005-04-01 Thread James Mastros
Larry Wall wrote: On Fri, Apr 01, 2005 at 08:39:52AM -0700, Luke Palmer wrote: : I'm pretty sure that =:= does what you want. If you have two scalar : references, you might have to spell it like this: : : $$x =:= $$y Unnecessary, I think. I want $x =:= @y to tell me whether the

Re: identity tests and comparing two references

2005-04-01 Thread Thomas Sandlaß
James Mastros wrote: $x = 42; $a = \$x but false; $b = \$y but blue; Assuming you meant \$x in the last row we are dealing with three values: 42 but true 42 but false 42 but blue Which are not identical but equal. The first value is not necessarily implemented that way because the boolean value

Re: identity tests and comparing two references

2005-03-31 Thread Sam Vilain
Darren Duncan wrote: Now I seem to remember reading somewhere that '===' will do what I want, but I'm now having trouble finding any mention of it. So, what is the operator for reference comparison? As someone who wrote a tool that uses refaddr() and 0+ in Perl 5 to achieve the same thing, I