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 (CSKID 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 CMETA function/method that returns the
+Every object supports a CHOW 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 @@
CArray objects, but it is true that C@a === @a because those are
the same CArray 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 CMETA(Moose) or CMoose.META. It still kinda
+so C^Moose is short for CHOW(Moose) or CMoose.HOW. 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;
-Cfoo.^bar is short for Cfoo.META.bar.
+Cfoo.^bar is short for Cfoo.HOW.bar.
=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