Author: lwall
Date: 2009-03-18 20:46:15 +0100 (Wed, 18 Mar 2009)
New Revision: 25891

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S06-routines.pod
   docs/Perl6/Spec/S09-data.pod
   docs/Perl6/Spec/S32-setting-library/Containers.pod
Log:
junctions are now considered a native type with private eigenstates


Modified: docs/Perl6/Spec/S02-bits.pod
===================================================================
--- docs/Perl6/Spec/S02-bits.pod        2009-03-18 19:04:16 UTC (rev 25890)
+++ docs/Perl6/Spec/S02-bits.pod        2009-03-18 19:46:15 UTC (rev 25891)
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <la...@wall.org>
   Date: 10 Aug 2004
-  Last Modified: 15 Mar 2009
+  Lwst Modified: 18 Mar 2009
   Number: 2
-  Version: 159
+  Version: 160
 
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -576,7 +576,7 @@
 
 Built-in object types start with an uppercase letter. This includes
 immutable types (e.g. C<Int>, C<Num>, C<Complex>, C<Rat>, C<Str>,
-C<Bit>, C<Regex>, C<Set>, C<Junction>, C<Code>, C<Block>, C<List>,
+C<Bit>, C<Regex>, C<Set>, C<Code>, C<Block>, C<List>,
 C<Seq>), as well as mutable (container) types, such as C<Scalar>,
 C<Array>, C<Hash>, C<Buf>, C<Routine>, C<Module>, etc.
 
@@ -588,6 +588,11 @@
 repeated autoboxing can slow your program more than the native type
 can speed it up.)
 
+The C<junction> type is considered a native type because its internal
+representation is fixed, and you may not usefully derive from it
+because the intent of junctions is to autothread any method calls
+on them.
+
 Some object types can behave as value types.  Every object can produce
 a "WHICH" value that uniquely identifies the
 object for hashing and other value-based comparisons.  Normal objects
@@ -937,7 +942,7 @@
 C<Failure> role.  (The C<undef> function merely returns the most
 generic C<Failure> object.  Use C<fail> to return more specific failures.  Use
 C<Object> for the most generic non-failure undefined value.  The C<Any>
-type is also undefined, but excludes C<Junctions> so that autothreading
+type is also undefined, but excludes C<junctions> so that autothreading
 may be dispatched using normal multiple dispatch rules.)
 
 The C<Nil> type is officially undefined as an item but interpolates
@@ -968,7 +973,6 @@
     Range       A pair of Ordered endpoints; gens immutables when iterated
     Set         Unordered collection of values that allows no duplicates
     Bag         Unordered collection of values that allows duplicates
-    Junction    Set with additional behaviors
     Signature   Function parameters (left-hand side of a binding)
     Capture     Function call arguments (right-hand side of a binding)
     Blob        An undifferentiated mass of bits
@@ -1028,8 +1032,8 @@
     Class       Perl 6 standard class namespace
     Role        Perl 6 standard generic interface/implementation
     Grammar     Perl 6 pattern matching namespace
-    Any         Perl 6 object (default routine parameter type, excludes 
Junction)
-    Object      Perl 6 object (default block parameter type, either Any or 
Junction)
+    Any         Perl 6 object (default routine parameter type, excludes 
junction)
+    Object      Perl 6 object (default block parameter type, either Any or 
junction)
 
 A C<KeyHash> differs from a normal C<Hash> in how it handles default
 values.  If the value of a C<KeyHash> element is set to the default

Modified: docs/Perl6/Spec/S06-routines.pod
===================================================================
--- docs/Perl6/Spec/S06-routines.pod    2009-03-18 19:04:16 UTC (rev 25890)
+++ docs/Perl6/Spec/S06-routines.pod    2009-03-18 19:46:15 UTC (rev 25891)
@@ -13,9 +13,9 @@
 
   Maintainer: Larry Wall <la...@wall.org>
   Date: 21 Mar 2003
-  Last Modified: 4 Mar 2009
+  Last Modified: 18 Mar 2009
   Number: 6
-  Version: 105
+  Version: 106
 
 
 This document summarizes Apocalypse 6, which covers subroutines and the
@@ -2876,7 +2876,7 @@
 
 The natural way to implement autothreading for multi subs is to
 simply have the junctional signatures (the ones that can accept
-Objects/Junctions as well as Any parameters) match more loosely than
+Objects or junctions as well as Any parameters) match more loosely than
 the non-autothreading versions, and let multiple dispatch find the
 appropriate sub based on the signature.  Those generic routines
 then end up redispatching to the more specific ones.

Modified: docs/Perl6/Spec/S09-data.pod
===================================================================
--- docs/Perl6/Spec/S09-data.pod        2009-03-18 19:04:16 UTC (rev 25890)
+++ docs/Perl6/Spec/S09-data.pod        2009-03-18 19:46:15 UTC (rev 25891)
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <la...@wall.org>
   Date: 13 Sep 2004
-  Last Modified: 4 Mar 2009
+  Last Modified: 18 Mar 2009
   Number: 9
-  Version: 30
+  Version: 31
 
 =head1 Overview
 
@@ -984,7 +984,7 @@
 In particular, if a junction is used as an argument to any routine
 (operator, closure, method, etc.), and the scalar parameter you
 are attempting to bind the argument to is inconsistent with the
-C<Junction> type, that routine is "autothreaded", meaning the routine
+C<junction> type, that routine is "autothreaded", meaning the routine
 will be called automatically as many times as necessary to process
 the individual scalar elements of the junction in parallel.
 

Modified: docs/Perl6/Spec/S32-setting-library/Containers.pod
===================================================================
--- docs/Perl6/Spec/S32-setting-library/Containers.pod  2009-03-18 19:04:16 UTC 
(rev 25890)
+++ docs/Perl6/Spec/S32-setting-library/Containers.pod  2009-03-18 19:46:15 UTC 
(rev 25891)
@@ -15,8 +15,8 @@
                 Moritz Lenz <mor...@faui2k3.org>
                        Tim Nelson <wayl...@wayland.id.au>
  Date:          19 Feb 2009 extracted from S29-functions.pod
- Last Modified: 8 Mar 2009
- Version:       2
+ Last Modified: 18 Mar 2009
+ Version:       3
 
 The document is a draft.
 
@@ -701,25 +701,24 @@
 
 class  KeyHash does Associative {...}
 
-=head2 Junction
+=head2 junction
 
-All method calls on Junctions autothread if there's no such method in the
-Junction class.
+All method calls on junctions autothread because the type provides no public 
methods.
 
 =over 4
 
-=item eigenstates
+=item !eigenstates
 
-    our List multi method eigenstates (Junction $j)
+    method !eigenstates (Junction $j: --> List)
 
 Returns an unordered list of the values that constitute the junction (formerly
 called C<.values>). It flattens nested junctions of the same type, so
 C<(1|(2|3)).eigenstate> returns an arbitrary permutation of the list
 C<1, 2, 3>.
 
-This method has a rather unusual name by intention; a more common name might
-cause confusion as it could clash with a method name over which autothreading
-is expected.
+Note this is a private method; you must arrange for yourself to be trusted
+by the junctions class in order to call it, which probably involves evil
+MONKEY_PATCHING.
 
 =back
 

Reply via email to