On Fri, Feb 04, 2005 at 04:09:03AM +0800, Autrijus Tang wrote:
> Okay.  So "Egg" is the value type for elements in @carton.  But what
> is the implementation type of @carton?
> 
>     my @carton of Egg is Scalar;        # is @carton Scalar?
>     my @carton of Egg is Array;         # is @carton Array?
> 
> S06 does not cover this point, which leads to a very bad case of
> ambiguity.  Below I will show that both interpretation are troublesome.

Thanks to Jonathan Scott Duff's off-list hint, A06 did show that
the second model is more correct.  That's what I get from basically
ignoring the Apocalypses during implementation. :-/  I stand corrected.
Won't do that again.

Attached is the patch to S06.pod that adds the two bits of information
I'd like to see.  The $dog typo has been fixed a week ago.

However, I'd still like to know whether my understanding on punning
(same class 'Array' used as both Implementation Type and Value Type)
and the validity of matching on "$var is TraitName" in subroutine
signatures is correct.  That, and types of hash keys. :)

Thanks,
/Autrijus/

--- S06.pod.orig        Fri Feb  4 04:29:34 2005
+++ S06.pod     Fri Feb  4 04:29:07 2005
@@ -650,6 +650,7 @@
     Class       Perl 6 standard class namespace
     Object      Perl 6 object
     Grammar     Perl 6 pattern matching namespace
+    Pair        Perl pair
     List        Perl list
     Lazy        Lazily evaluated Perl list
     Eager       Non-lazily evaluated Perl list
@@ -685,6 +686,7 @@
 The implementation type specifies how the variable itself is implemented. It is
 given as a trait of the variable:
 
+    my @carton is Array;            # this is the default
     my $spot is Scalar;             # this is the default
     my $spot is PersistentScalar;
     my $spot is DataBase;

Attachment: pgphVVFZmNiwL.pgp
Description: PGP signature

Reply via email to