Author: lwall
Date: 2009-11-20 05:31:36 +0100 (Fri, 20 Nov 2009)
New Revision: 29140

[S12] start process of distingishing abstract ~ from concrete .Str
(likewise for + vs .Num)

Modified: docs/Perl6/Spec/S12-objects.pod
--- docs/Perl6/Spec/S12-objects.pod     2009-11-20 04:24:48 UTC (rev 29139)
+++ docs/Perl6/Spec/S12-objects.pod     2009-11-20 04:31:36 UTC (rev 29140)
@@ -1889,7 +1889,7 @@
 Metamethods for objects are named with interrogative pronouns in uppercase:
-    WHAT        the type object of the type, stringifies to short name ~ '()'
+    WHAT        the type object of the type, .Str returns MyClass()
     WHICH       the object's identity value
     WHO         the package supporting the object, stringifies to long name
     WHERE       the memory address of the object
@@ -1922,10 +1922,14 @@
 as the first argument to methods of the metaclass, while the other
 forms require you to pass this explicitly.
-Note that C<WHAT> appends C<()> to indicate emptiness.  Use C<.perl> to get the
-bare name from a type object.
+Note that C<WHAT.Str> appends C<()> to the name to indicate emptiness.
+Use C<.perl> to get the bare name from a type object.  Use one of
+C<.Stringy>, C<< prefix:<~> >>, or C<< infix:<~> >> to get the Perl5ish
+semantics of returning the empty string (with a warning) on any type
+object.  (There is no "undef", in Perl 6; type objects provide typed
+undefs instead.)
-In general, use of these in ordinary code should be a red flag that
+In general, use of these uppercased accessors in ordinary code should be a red 
flag that
 Something Very Strange is going on.  (Hence the allcaps.)  Most code
 should use PerlĀ 6's operators that make use of this information
 implicitly.  For instance, instead of

Reply via email to