Comments (otherwise you have things pretty much right):

> Every subrotine or variable or method or object can have a "notes" (out of bound 
>data)

out-of-band data


> we can even have hyper-assignment :
> 
> my ($a, $b) ^= new Foo;

This is unlikely to do what you wanted. It creates a new Foo object and then
assigns a reference to that one object to both $a and $b. It doesn't create two
Foo objects. (But maybe one object referenced twice is what you wanted).


> Let's someone of the anti-perl camp tell me that this "upper-cap noise" makes the 
>code hard to read and I will smash him with a hammer in the head :") and leave him to 
>type "from here to tommorow loop after loop after loop after loop" :"). Gees those 
>perl designers with LW in the head are mad-scientists .....

Do you really need to say this?



> 7.) Quantum superpositions ===============

>  if ($x == any($a, $b, $c) { ...  }
> 
>  if any of the variables equals $x then the code will be executed. Probably we will 
>be able to say :
> 
>  $x ^== ($a,$b,$c)
> 
>  too. The difference as I understand it in that particular case is [?? correct me if 
>i'm wrong ??]
 :
>  case1 - superposition :
> 
>  if ($x == $a || $x == $b || $x == $c) { ...  }

Correct.

> 
> case2 - hyperoperator :
> 
> my $result = 0;
> for ($a,$b,$c)  {
>    if ($x == $_) { $result =1; last}
> }

Not correct. The second case is the same as:

        ($x == $a, $x == $b, $x == $c)

which reduces in effect to:

        $x == $c


> while ($nextval < all(@thresholds) { ... }
> 
> This time all() binds the @threshold with && not with || as it was with any().

It's equivalent to:

        while ($nextval < @thresholds[0] && $nextval < @thresholds[1] && ...) { ... }


> $max = any(@value) < all(@values);

That's:

        $max = any(@values) >= all(@values);



> and all they (except CATCH) are in fact proprietes of the block

So is CATCH.


> [?? the apo4 uses undo instead of keep, 'm I right ??]

It uses both, because they have different effects.
undo(...) is only invoked if the block "fails",
keep(...) is only invoked if the block "succeeds".


> CATCH {
>   when Error::DB {};
>   when Error::XX {};
> }
> 
> is :
> 
> CATCH $! {
>   when $!.isa(Error::DB) {};
>   when $!.isa(Error::XX) {};
>   default die;#!! not sure
> }

No, it's equivalent to:

        switch $! {
                when .isa(Error::DB) {}
                when .isa(Error::XX) {}
                default { die; }
        }



>     try { ... }
> 
> is equivalent to:
> 
>     try { ... CATCH { default { } } }

Except it also returns C<undef>.



> for @a; @b; @c -> $x { ... }
> 
> One at a time across all arrays sequentally i.e. @a[0],@a[1],...@b[0], @b[1], ..., 
>@c[0], @c[1], ... .

No. This one pulls one from each array in turn. i.e. @a[0], @b[0], @c[0], @a[1], 
@b[1], @c[1], @a[2], @b[2], @c[2],...


Damian

Reply via email to