Author: lwall
Date: 2009-03-19 21:35:30 +0100 (Thu, 19 Mar 2009)
New Revision: 25911
Modified:
docs/Perl6/Spec/S12-objects.pod
Log:
mark recent remarks as only for post-6.0.0
Modified: docs/Perl6/Spec/S12-objects.pod
===================================================================
--- docs/Perl6/Spec/S12-objects.pod 2009-03-19 19:14:28 UTC (rev 25910)
+++ docs/Perl6/Spec/S12-objects.pod 2009-03-19 20:35:30 UTC (rev 25911)
@@ -14,7 +14,7 @@
Date: 27 Oct 2004
Last Modified: 19 Mar 2009
Number: 12
- Version: 78
+ Version: 79
=head1 Overview
@@ -1335,6 +1335,19 @@
preferred if the constraint matches, and otherwise the second is
preferred.
+=head2 Multiple constraints
+
+[Conjecture: This entire section is considered a guess at our
+post-6.0.0 direction. For 6.0.0 we will allow only a single constraint
+before the variable, and post constraints will all be considered
+"epsilon" narrower than the single type on the left. The single
+constraint on the left may, however, be a value like 0 or a named
+subset type. Such a named subset type may be predeclared with an
+arbitrarily complex C<where> clause; for 6.0.0 any structure type
+information inferrable from the C<where> clause will be ignored,
+and the declared subset type will simply be considered nominally
+derived from the C<of> type mentioned in the same declaration.]
+
More generally, a parameter can have a set of constraints, and
the set of constraints defines the formal type of the parameter,
as visible to the signature. (No one constraint is priviledged as
@@ -1349,7 +1362,7 @@
The sigil is actually a constraint on the container, so the actual
type of the parameter above is something like:
- Positional[role { does Foo; does Bar; }]
+ Positional[subset :: of Any where Foo & Bar }]
Static C<where> clauses also count as part of the official type.
A C<where> clause is considered static if it can be applied to