Author: lwall
Date: 2009-03-04 23:30:37 +0100 (Wed, 04 Mar 2009)
New Revision: 25693

Modified:
   docs/Perl6/Spec/S12-objects.pod
Log:
clarify enum vs sub for moritz++


Modified: docs/Perl6/Spec/S12-objects.pod
===================================================================
--- docs/Perl6/Spec/S12-objects.pod     2009-03-04 22:27:08 UTC (rev 25692)
+++ docs/Perl6/Spec/S12-objects.pod     2009-03-04 22:30:37 UTC (rev 25693)
@@ -14,7 +14,7 @@
   Date: 27 Oct 2004
   Last Modified: 4 Mar 2009
   Number: 12
-  Version: 72
+  Version: 73
 
 =head1 Overview
 
@@ -1293,7 +1293,7 @@
 
 An enum is a low-level class that can function as a role or property.
 A given enum value can function as a subtype, a method, or as an ordinary
-value (an argumentless sub).  The names of the values are specified as a list:
+value.  The names of the values are specified as a list:
 
     my enum Day ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
     my enum Day <Sun Mon Tue Wed Thu Fri Sat>;
@@ -1411,7 +1411,6 @@
     $x.does(day)
     $x.day == Tue
     day($x) == Tue
-    Tue($x)
     $x.Tue
 
 all return true, and
@@ -1436,6 +1435,23 @@
 type C<bit>.  Never compare a value to "C<true>", or even "C<True>".
 Just use it in a boolean context.
 
+Like type names, enum names are parsed as standalone tokens
+representing scalar values, and don't look for any arguments.
+Unlike type names which are undefined protoobjects, enums are defined
+constant values.  Also unlike types, they do not respond to C<.()>.
+They may not be post-declared.
+
+    our enum Maybe <OK FAIL>;
+    sub OK {...}
+    $x = OK;   # certainly the enum value
+    $x = OK()  # certainly the function
+
+Since there is an enum OK, the function OK may only be
+called using parentheses, never in list operator form.  (If there is
+a collision on two enum values that cancels them both, the function
+still may only be called with parentheses, since the enum symbol
+is "poisoned".)
+
 Enum types (and perhaps certain other finite, enumerable types such
 as finite ranges) define a C<.pick> method on the protoobject of
 that type.  Hence:

Reply via email to