Author: larry
Date: Wed Sep 13 11:05:34 2006
New Revision: 11977
Modified:
doc/trunk/design/syn/S02.pod
doc/trunk/design/syn/S03.pod
doc/trunk/design/syn/S06.pod
doc/trunk/design/syn/S09.pod
doc/trunk/design/syn/S12.pod
Log:
Metamethod revamp.
Modified: doc/trunk/design/syn/S02.pod
==
--- doc/trunk/design/syn/S02.pod(original)
+++ doc/trunk/design/syn/S02.podWed Sep 13 11:05:34 2006
@@ -12,9 +12,9 @@
Maintainer: Larry Wall <[EMAIL PROTECTED]>
Date: 10 Aug 2004
- Last Modified: 27 Aug 2006
+ Last Modified: 13 Sept 2006
Number: 2
- Version: 66
+ Version: 67
This document summarizes Apocalypse 2, which covers small-scale
lexical items and typological issues. (These Synopses also contain
@@ -455,13 +455,11 @@
can speed it up.)
Some object types can behave as value types. Every object can produce
-a "safe key identifier" (C for short) that uniquely identifies the
+a "WHICH" value that uniquely identifies the
object for hashing and other value-based comparisons. Normal objects
just use their address in memory, but if a class wishes to behave as a
-value type, it can define a C<.SKID> method that makes different objects
+value type, it can define a C<.WHICH> method that makes different objects
look like the same object if they happen to have the same contents.
-SKID may also stand for "static key id", or "silly key id", or
-"secret key id", or "supercalifragilisticexpialidocious key id".
=item *
@@ -483,13 +481,13 @@
=item *
-Every object supports a C function/method that returns the
+Every object supports a C function/method that returns the
metaclass instance managing it, regardless of whether the object
is defined:
-'x'.META.get_method_list; # get available methods for strings
-Str.META.get_method_list; # same thing with the prototype object Str
-META(Str).get_method_list; # same thing as function call
+'x'.HOW.get_method_list; # get available methods for strings
+Str.HOW.get_method_list; # same thing with the prototype object Str
+HOW(Str).get_method_list; # same thing as function call
'x'.get_method_list;# this is an error - not a meta object
Str.get_method_list;# same thing
Modified: doc/trunk/design/syn/S03.pod
==
--- doc/trunk/design/syn/S03.pod(original)
+++ doc/trunk/design/syn/S03.podWed Sep 13 11:05:34 2006
@@ -14,7 +14,7 @@
Date: 8 Mar 2004
Last Modified: 13 Sep 2006
Number: 3
- Version: 62
+ Version: 63
=head1 Changes to Perl 5 operators
@@ -373,7 +373,7 @@
C objects, but it is true that C<@a === @a> because those are
the same C object).
-Any object type may pretend to be a value type by defining a C<.SKID>
+Any object type may pretend to be a value type by defining a C<.WHICH>
method which returns a value type that can be recursively compared
using C<===>, or in cases where that is impractical, by overloading
C<===> such that the comparison treats values consistently with their
@@ -494,7 +494,7 @@
for ^(3,3) { ... } # (0,0)(0,1)(0,2)(1,0)(1,1)(1,2)(2,0)(2,1)(2,2)
If applied to a type name, it indicates the metaclass instance instead,
-so C<^Moose> is short for C or C. It still kinda
+so C<^Moose> is short for C or C. It still kinda
means "what is this thing's domain" in an abstract sort of way.
=item * The C<...> operator is the "yada, yada, yada" list operator,
@@ -512,7 +512,7 @@
variants C<.*>, C<.?>, and C<.+> to control how multiple related methods
of the same name are handled. The C<.=> operator does inplace modification
of the object on the left. The C<.^> operator calls a class metamethod;
-C is short for C.
+C is short for C.
=item * Unary C<=> reads lines from a filehandle or filename, or
iterates an iterator, or in general causes a scalar to explode its guts
Modified: doc/trunk/design/syn/S06.pod
==
--- doc/trunk/design/syn/S06.pod(original)
+++ doc/trunk/design/syn/S06.podWed Sep 13 11:05:34 2006
@@ -13,9 +13,9 @@
Maintainer: Larry Wall <[EMAIL PROTECTED]>
Date: 21 Mar 2003
- Last Modified: 25 Aug 2006
+ Last Modified: 13 Sept 2006
Number: 6
- Version: 53
+ Version: 54
This document summarizes Apocalypse 6, which covers subroutines and the
@@ -1358,7 +1358,7 @@
Objects with these types behave like values, i.e. C<$x === $y> is true
if and only if their types and contents are identical (that is, if
-C<$x.SKID> eqv C<$y.SKID>).
+C<$x.WHICH> eqv C<$y.WHICH>).
Bit Perl single bit (allows traits, aliasing, undef, etc.)
Int Perl integer (allows Inf/NaN, arbitrary precision, etc.)
@@ -1382,7 +1382,7 @@
=head2 Mutable types
-Objects with these types have distinct C<.SKID> values that do not change
+O