# New Ticket Created by  Richard Hainsworth 
# Please include the string:  [perl #63918]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=63918 >


An .eigenstates method is needed for Object.

Background:
The following code may or may not fail depending on whether the junction 
is 'picked':

my @s = 1|11,2,3,4,5,6,7; # the 1|11 junction as in the value of an ace 
in 21
my @x;
loop {
   @x = @s.pick(3);
   ([+] @x).eigenstates.min.say;
};


Jon Lang wrote:

... in the same way that an item can be treated as a
one-item list for the purposes of list context (and vice versa), a
non-Junction should be able to be treated as a Junction with a single
eigenstate (i.e., a Singleton) for the purposes of junctive semantics.
 That is, $x.^eigenstates === ($x) if $x is not a junction.  Not only
does this reduce the need to test for junctions, but it also makes
that test fairly straightforward: count the eigenstates.  If you only
have one, it isn't a junction.


On Sun, Mar 15, 2009 at 07:26:00PM +0100, Jonathan Worthington wrote:

> > You can detect junctions by smart-matching against the Junction type  
> > (e.g. $sum ~~ Junction).
> >
> > my @s=1|11,2,3,4,5,6;
> > loop {
> >    my $sum = [+] @s.pick(3);
> >    say $sum ~~ Junction ?? $sum.eigenstates.min !! $sum;
> > }
>   

Larry Wall wrote:
I see no particular reason not to add an .eigenstates method to Object
that returns a list of the object itself .  It doesn't interfere with
the .eigenstates method defined in Junction, unless you want to
determine whether something is a Junction by seeing if it can respond
to .eigenstates, which seems wrongish.

Larry



Reply via email to