perl.perl6.language http://www.nntp.perl.org/group/perl.perl6.language/ [svn:perl6-synopsis] r14568 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Thu Jul 17 11:05:58 2008
New Revision: 14568

Modified:
doc/trunk/design/syn/S09.pod

Log:
typo from DietCoke++


Modified: doc/trunk/design/syn/S09.pod
==============================================================================
--- doc/trunk/design/syn/S09.pod (original)
+++ doc/trunk/design/syn/S09.pod Thu Jul 17 11:05:58 2008
@@ -789,7 +789,7 @@
@x[0;1;42]
@x[0..10; 1,0; 1..*:by(2)]

-Built-in array types are expected succeed either way, even if
+Built-in array types are expected to succeed either way, even if
the cascaded subscript form must be implemented inefficiently by
constructing temporary slice objects for later subscripts to use.
(User-defined types may choose not to support the cascaded form, but

2008-07-17T11:11:18Z
[svn:perl6-synopsis] r14567 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Thu Jul 17 10:57:24 2008
New Revision: 14567

Modified:
doc/trunk/design/syn/S09.pod

Log:
Equivalence of cascaded and semicolon subscript forms suggested by nick++


Modified: doc/trunk/design/syn/S09.pod
==============================================================================
--- doc/trunk/design/syn/S09.pod (original)
+++ doc/trunk/design/syn/S09.pod Thu Jul 17 10:57:24 2008
@@ -12,9 +12,9 @@

Maintainer: Larry Wall <larry@wall.org>
Date: 13 Sep 2004
- Last Modified: 27 May 2008
+ Last Modified: 17 July 2008
Number: 9
- Version: 27
+ Version: 28

=head1 Overview

@@ -776,6 +776,27 @@

@x[0;1;42]

+=head1 Cascaded subscripting of multidimensional arrays
+
+For all multidimensional array types, it is expected that cascaded subscripts:
+
+ @x[0][1][42]
+ @x[0..10][1,0][1..*:by(2)]
+
+will either fail or produce the same results as the equivalent
+semicolon subscripts:
+
+ @x[0;1;42]
+ @x[0..10; 1,0; 1..*:by(2)]
+
+Built-in array types are expected succeed either way, even if
+the cascaded subscript form must be implemented inefficiently by
+constructing temporary slice objects for later subscripts to use.
+(User-defined types may choose not to support the cascaded form, but
+if so, they should fail rather than providing different semantics.)
+As a consequence, for built-in types of declared shape, the appropriate
+number of cascaded subscripts may always be optimized into the
+semicolon form.

=head1 The semicolon operator

2008-07-17T11:01:07Z
[svn:perl6-synopsis] r14566 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Wed Jul 16 23:52:23 2008
New Revision: 14566

Modified:
doc/trunk/design/syn/S04.pod

Log:
suggestion from moritz++ that POST blocks be allowed to see the return value


Modified: doc/trunk/design/syn/S04.pod
==============================================================================
--- doc/trunk/design/syn/S04.pod (original)
+++ doc/trunk/design/syn/S04.pod Wed Jul 16 23:52:23 2008
@@ -14,7 +14,7 @@
Date: 19 Aug 2004
Last Modified: 16 July 2008
Number: 4
- Version: 67
+ Version: 68

This document summarizes Apocalypse 4, which covers the block and
statement syntax of Perl.
@@ -1060,6 +1060,14 @@
before C<BEGIN>, C<CHECK>, or C<INIT>, since those are done at compile or
process initialization time).

+For blocks such as C<KEEP> and C<POST> that are run when exiting a
+scope normally, the return value (if any) from that scope is available
+as the current topic. (It is presented as a C<Capture> object.)
+The topic of the outer block is still available as C<< OUTER::<$_> >>.
+Whether the return value is modifiable may be a policy of the block
+in question. In particular, the return value should not be modified
+within a C<POST> block, but a C<LEAVE> block could be more liberal.
+
=head1 Statement parsing

In this statement:

2008-07-16T23:53:08Z
[svn:perl6-synopsis] r14565 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Wed Jul 16 23:26:04 2008
New Revision: 14565

Modified:
doc/trunk/design/syn/S04.pod

Log:
clarification suggested by Bob Rogers++


Modified: doc/trunk/design/syn/S04.pod
==============================================================================
--- doc/trunk/design/syn/S04.pod (original)
+++ doc/trunk/design/syn/S04.pod Wed Jul 16 23:26:04 2008
@@ -1276,8 +1276,8 @@
symbol tables visible at compile time, this binds to the compile-time
view of the lexical scopes. (At run-time, the initial run-time view
of these scopes is copied from the compiler's view of them, so that
-initializations carry over, for instance.) At run time, whenever such
-a subroutine needs to be cloned, an additional C<:=> binding is done
+initializations carry over, for instance.) At run time, when such
+a subroutine is cloned, an additional C<:=> binding is done
at clone time to the same symbol table entry that the original C<::=>
was bound to. (The binding is not restored on exit from the current
lexical scope; this C<:=> binding records the I<last> cloning, not

2008-07-16T23:26:13Z
[svn:perl6-synopsis] r14564 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Wed Jul 16 15:53:34 2008
New Revision: 14564

Modified:
doc/trunk/design/syn/S04.pod

Log:
typo from Brandon++


Modified: doc/trunk/design/syn/S04.pod
==============================================================================
--- doc/trunk/design/syn/S04.pod (original)
+++ doc/trunk/design/syn/S04.pod Wed Jul 16 15:53:34 2008
@@ -1290,7 +1290,7 @@
do not need a compile-time C<::=> binding, but like global subs,
they perform a C<:=> binding to the lexical symbol at clone time
(again, conceptually at the entry to the outer lexical scope, but
-possible deferred.)
+possibly deferred.)

sub foo {
# conceptual cloning happens to both blocks below

2008-07-16T15:53:42Z
[svn:perl6-synopsis] r14563 - doc/trunk/design/syn (2 messages)

From: Brandon S. Allbery KF8NH, larry Author: larry
Date: Wed Jul 16 12:56:34 2008
New Revision: 14563

Modified:
doc/trunk/design/syn/S04.pod

Log:
[S04] another whack at defining consistent closure semantics


Modified: doc/trunk/design/syn/S04.pod
==============================================================================
--- doc/trunk/design/syn/S04.pod (original)
+++ doc/trunk/design/syn/S04.pod Wed Jul 16 12:56:34 2008
@@ -12,9 +12,9 @@

Maintainer: Larry Wall <larry@wall.org>
Date: 19 Aug 2004
- Last Modified: 12 July 2008
+ Last Modified: 16 July 2008
Number: 4
- Version: 66
+ Version: 67

This document summarizes Apocalypse 4, which covers the block and
statement syntax of Perl.
@@ -1253,27 +1253,64 @@
is free to turn unreferenced closures into mere blocks of code.
It is also free to turn referenced closures into mere anonymous
subroutines if the block does not refer to any external lexicals that
-should themselves be cloned. In particular, named subroutines in any
-scope do not consider themselves closures unless you take a reference
-to them. So
+should themselves be cloned. (When we say "clone", we mean the way
+the system takes a snapshot of the routine's lexical scope and binds
+it to the current instance of the routine so that if you ever use
+the current reference to the routine, it gets the current snapshot
+of its world in terms of the lexical symbols that are visible to it.)
+
+All remaining blocks are conceptually cloned into closures as soon
+as the lexical scope containing them is entered. (This may be done
+lazily as long as consistent semantics are preserved, so a block
+that is never executed and never has a reference taken can avoid
+cloning altogether. Execution or reference taking forces cloning
+in this case--references are not allowed to be lazily cloned, since
+no guarantee can be made that the scope needed for cloning will
+remain in existence over the life of the reference.)
+
+In particular, named subroutines are a special problem when embedded in
+a changing lexical scope (when they make reference to it). The binding
+of such a definition to a name within a symbol table counts as taking
+a reference, so at compile time there is an initial C<::=> binding
+to the symbol table entry in question. For "global" bindings to
+symbol tables visible at compile time, this binds to the compile-time
+view of the lexical scopes. (At run-time, the initial run-time view
+of these scopes is copied from the compiler's view of them, so that
+initializations carry over, for instance.) At run time, whenever such
+a subroutine needs to be cloned, an additional C<:=> binding is done
+at clone time to the same symbol table entry that the original C<::=>
+was bound to. (The binding is not restored on exit from the current
+lexical scope; this C<:=> binding records the I<last> cloning, not
+the currently in-use cloning, so any use of the global reference must
+take into consideration that it is functioning only as a cache of the
+most recent cloning, not as a surrogate for the current lexical scope.)
+
+Lexical names do not share this problem, since the symbol goes out
+of scope synchronously with its usage. Unlike global subs, they
+do not need a compile-time C<::=> binding, but like global subs,
+they perform a C<:=> binding to the lexical symbol at clone time
+(again, conceptually at the entry to the outer lexical scope, but
+possible deferred.)

sub foo {
+ # conceptual cloning happens to both blocks below
my $x = 1;
- my sub bar { print $x } # not cloned yet
- my &baz = { bar(); print $x }; # cloned immediately
- my $code = &bar; # now bar is cloned
+ my sub bar { print $x } # already conceptualy cloned, but can be lazily deferred
+ my &baz := { bar(); print $x }; # block is cloned immediately, forcing cloning of bar
+ my $code = &bar; # this would also force bar to be cloned
return &baz;
}

-When we say "clone", we mean the way the system takes a snapshot of the
-routine's lexical scope and binds it to the current instance of the routine
-so that if you ever use the current reference to the routine, it gets
-the current snapshot of its world, lexically speaking. (When we say that
-named subroutines do not consider themselves closures, this is a bit of a
-fib, since we must, in fact, take a reference to the subroutine in order to
-store it into the symbol table! But this operation happens at compile time
-so the lexical scopes in view are just the initial prototype lexical scopes
-visible to the compiler.)
+In particular, blocks of inline control flow need not be cloned until
+called. [Note: this is currently a potential problem for user-defined
+constructs, since you have to take references to blocks to pass them
+to whatever is managing the control flow. Perhaps the laziness can
+be deferred through Captures to binding time, so a slurpy of block
+refs doesn't clone them all prematurely. On the other hand, this
+either means the Capture must be smart enough to keep track of the
+lexical scope it came from so that it can pass the info to the cloner,
+or it means that we need some special fat not-cloned-yet references
+that can carry the info lazily. Neither approach is pretty.]

Some closures produce C<Code> objects at compile time that cannot be
cloned, because they're not attached to any runtime code that can

2008-07-16T12:56:45Z
Parrot 0.6.4 (2 messages)

From: François Perrad, Bernhard Schmalhofer Hi,

on behalf of the Parrot team, I'm proud to announce the release of
Parrot 0.6.4
"St. Vincent Amazon."

Parrot 0.6.4 is available via CPAN, or follow the download
instructions at http://parrotcode.org/source.html. For those who would
like to develop on
Parrot, or help develop Parrot itself, we recommend using Subversion on
the source code repository to get the latest and best Parrot code.

Parrot 0.6.4 News:
- Documentation
+ removed a lot of old information from the FAQ
+ improved function level documentation
- Configuration
+ removed the configuration item 'has_gnu_m4'
+ refactored ICU-detection
- Languages
+ ChitChat
- improved the Smalltalk implementation
+ Pipp
- renamed Plumhead to Pipp
- support for a lot of builtin functions.
- Pipp now uses PHP specific data types.
- converted from PCT with TGE to PCT with NQP actions
- improvements in the PCT variant by using optok parsing
- start of object support
+ pir
- simple assignments work
+ json
- added a PCT-based implementation of JSON parsing
+ lolcode
- improved handling of symbols
- added support for block handling
- added support for globals
+ Lua
- more tests
+ Rakudo
- updated Range implementation
- added enums
- added generic type declarations (::T)
- added runtime mixing of roles with 'does' and 'but'
- added generic type declarations
- fixed handling of implicit lexicals ($_, $!, and $/)
- fixed implicit method calls on $_
- improved complex math builtins, added Complex
- moved many builtins to class Any
- declaration of lists of variables now work
- improved test infrastructure
- 910 additional passing spec tests since last release
- more convergence with STD.pm grammar
- added named 0-ary parsing and ops
- Compilers
+ PCT:
- allowed subroutine and method names to be a PAST tree that
produces the name
- Improved lexical handling
- Tools
+ pbc_disassemble renamed from disassemble
- Implementation
+ allowed .macro_const in PIR
+ added the flag :lexid(...) for subroutines
+ made multiple dispatch work for sub types
+ fixed garbage collection bug related to the metadata attached to a
PMC_EXT structure
+ added a warning when using deprecated opcodes
+ simplified the stacks implementation
+ fixed C++ build
+ improved closure and lexical support
+ improved IMCC register allocator
+ added cache for all runtime-constant strings, reducing memory usage
- Miscellaneous
+ improved OpenGL/GLU/GLUT bindings
+ added a standard profile for Perl::Critic coding standard testing
+ added support for smoke testing with Smolder
+ enabled use of Test::Harness 3.0 if available, but don't require it
for 'make test'
+ added the executable 'parrot_config' to query Parrot configuration


Many thanks to all our contributors for making this possible, and our
sponsors
for supporting this project. Our next scheduled release is August 19th
2008.

Enjoy!


2008-07-15T07:51:39Z
Complex planes (11 messages)

From: Jon Lang, Moritz Lenz, Larry Wall, mark.a.biggar Today bacek++ implement complex logarithms in rakudo, and one of the
tests failed because it assumed the result to be on a different complex
plane. (log(-1i) returned 0- 1.5708i, while 0 + 3/2*1i was expected).

Should we standardize on one complex plane (for example -pi <= $c.angle
< pi like Complex.angle does)? Or simply fix the test to be agnostic to
complex planes?

Cheers,
Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

2008-07-15T06:30:46Z
$foo[0][0] versus $foo[0;0] (3 messages)

From: Nicholas Clark, Adrian Kreher, Larry Wall Hi,

I'm reviewing the tests in S09, and the file
t/spec/S02-builtin_data_types/multi_dimensional_array.t uses the [0][0]
indexing format interchangeably with [0;0].

These two formats mean two different things, correct? The [0][0] form isn't
mentioned much in the spec, nor is [0;0] or if they interact somehow.

Thanks,
--
Adrian Kreher

2008-07-13T12:17:27Z
meta_postfix:<*> (7 messages)

From: Jon Lang, Aristotle Pagaltzis, TSa , Dave Whipp HaloO,

I know that the hot phase of the operator discussions are over.
But here's a little orthogonalizing idea from my side. The observation
is that * can be regarded as repeated addition: 5 * 3 == 5 + 5 + 5
and ** as repeated multiplication. Now imagine having a meta_postfix:<*>
that gives +* as multiplication (perhaps abbreviated as *) and ** as
(integer) exponentiation. We can then continue with replication as ~*
for strings and ,* for lists thus freeing x and xx as some generic
multiplication operators.

The meta * also is useful e.g. as (1,2) Z* 3 === (1,1,1),(2,2,2). Also
when we apply it to unary postfix as well: $x++* 3 === $x++.++.++ which
is useful when $x is of some class with overloaded ++ where the single
steps are important. The meta postfix * could also be stacked and tetration
falls out naturally as ***.

With + as the default case for meta_postfix:<*> we win the advantage that
we have +* and * as multiplication operators with the latter being a special
form of the former. But for Vectors +* would automatically yield the scalar
multiplication infix:<+*>:(Vector,Num) when infix:<+>:(Vector,Vector) is
defined as expected.


Regards, TSa.
--
"The unavoidable price of reliability is simplicity" -- C.A.R. Hoare
"Simplicity does not precede complexity, but follows it." -- A.J. Perlis
1 + 2 + 3 + 4 + ... = -1/12 -- Srinivasa Ramanujan

2008-07-13T03:46:48Z
S04-related closure question (1 message)

From: Patrick R. Michaud What would be the expected output from the following?

my $a = foo();
my $b;

{
my $x = 1;
sub get_x() { return $x; }
sub foo() { return &get_x; }
$b = foo();
}

my $c = foo();

say "a: ", $a();
say "b: ", $b();
say "c: ", $c();

As a followup question, what about...?

my @array;
for 1..3 -> $x {
sub get_x() { return $x; }
push @array, &get_x;
}

for @array -> $f { say $f(); }

Pm

2008-07-12T19:52:42Z
[svn:perl6-synopsis] r14562 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Sat Jul 12 10:50:57 2008
New Revision: 14562

Modified:
doc/trunk/design/syn/S04.pod

Log:
[S04] small clarification to whether named subs are really closures


Modified: doc/trunk/design/syn/S04.pod
==============================================================================
--- doc/trunk/design/syn/S04.pod (original)
+++ doc/trunk/design/syn/S04.pod Sat Jul 12 10:50:57 2008
@@ -12,9 +12,9 @@

Maintainer: Larry Wall <larry@wall.org>
Date: 19 Aug 2004
- Last Modified: 2 Apr 2008
+ Last Modified: 12 July 2008
Number: 4
- Version: 65
+ Version: 66

This document summarizes Apocalypse 4, which covers the block and
statement syntax of Perl.
@@ -1268,7 +1268,12 @@
When we say "clone", we mean the way the system takes a snapshot of the
routine's lexical scope and binds it to the current instance of the routine
so that if you ever use the current reference to the routine, it gets
-the current snapshot of its world, lexically speaking.
+the current snapshot of its world, lexically speaking. (When we say that
+named subroutines do not consider themselves closures, this is a bit of a
+fib, since we must, in fact, take a reference to the subroutine in order to
+store it into the symbol table! But this operation happens at compile time
+so the lexical scopes in view are just the initial prototype lexical scopes
+visible to the compiler.)

Some closures produce C<Code> objects at compile time that cannot be
cloned, because they're not attached to any runtime code that can

2008-07-12T10:51:06Z
Question about .sort and .reduce (5 messages)

From: Patrick R. Michaud, Larry Wall, TSa
t/spec/S29-list/sort.t has the following test:

my @a = (2, 45, 6, 1, 3);
my @e = (1, 2, 3, 6, 45);
my @s = { $^a <=> $^b }.sort: @a;
is(@s, @e, '... with closure as direct invocant');

S29 doesn't show a 'sort' method defined on block/closure
invocants... should there be?

Note that we already have:

my @s = sort { $^a <=> $^b }, @a;
my @s = @a.sort { $^a <=> $^b };

A similar question applies for .reduce in S29-list/reduce.t :

is(({ $^a * $^b }.reduce: 1,2,3,4,5), 120, "basic reduce works (3)");

Thanks!

Pm

2008-07-11T06:00:32Z
[svn:perl6-synopsis] r14561 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Thu Jul 10 19:03:34 2008
New Revision: 14561

Modified:
doc/trunk/design/syn/S12.pod

Log:
[S12] s/bool/Bool/


Modified: doc/trunk/design/syn/S12.pod
==============================================================================
--- doc/trunk/design/syn/S12.pod (original)
+++ doc/trunk/design/syn/S12.pod Thu Jul 10 19:03:34 2008
@@ -14,7 +14,7 @@
Date: 27 Oct 2004
Last Modified: 10 Jul 2008
Number: 12
- Version: 60
+ Version: 61

=head1 Overview

@@ -1352,7 +1352,7 @@

is short for something like:

- 0 but bool::True
+ 0 but Bool::True

A property is defined by a role like this:

@@ -1707,7 +1707,7 @@
or the old one.) Any explicit sub or type definition hides all imported
enum values of the same name but will produce a warning unless
C<is redefined> is included. Note that true() is a built-in function,
-while True is short for C<bool::True>.
+while True is short for C<Bool::True>.

Enum values may be used as a property on the right side
of a C<but>, and the enum type will be intuited from the value to make
@@ -1764,13 +1764,15 @@

Two built-in enums are:

- our bit enum *bool <False True>;
- our bit enum *taint <Untainted Tainted>;
+ our bit enum Bool <False True>;
+ our bit enum Taint <Untainted Tainted>;

-Note that C<bool> and C<taint> are really role names. You can call
-C<.bool> on any built-in type, but the value returned is of type C<bit>.
-Never compare a value to "C<true>", or even "C<True>". Just use it
-in a boolean context.
+Note that C<Bool> and C<Taint> are really role names, and the enum
+values are really subset types of the C<bit> integer type. You can
+call the C<.Bool> coercion or the C<true> function or the C<?>
+prefix operator on any built-in type, but the value returned is of
+type C<bit>. Never compare a value to "C<true>", or even "C<True>".
+Just use it in a boolean context.

=head1 Open vs Closed Classes

2008-07-10T19:03:42Z
[svn:perl6-synopsis] r14560 - doc/trunk/design/syn (1 message) <p>From: larry Author: larry<br/>Date: Thu Jul 10 14:01:39 2008<br/>New Revision: 14560<br/><br/>Modified:<br/> doc/trunk/design/syn/S12.pod<br/><br/>Log:<br/>[S12] .HOW clarifications requested by ruoso++<br/><br/><br/>Modified: doc/trunk/design/syn/S12.pod<br/>==============================================================================<br/>--- doc/trunk/design/syn/S12.pod (original)<br/>+++ doc/trunk/design/syn/S12.pod Thu Jul 10 14:01:39 2008<br/>@@ -12,9 +12,9 @@<br/> <br/> Maintainer: Larry Wall &lt;larry@wall.org&gt;<br/> Date: 27 Oct 2004<br/>- Last Modified: 21 May 2008<br/>+ Last Modified: 10 Jul 2008<br/> Number: 12<br/>- Version: 59<br/>+ Version: 60<br/> <br/> =head1 Overview<br/> <br/>@@ -120,7 +120,7 @@<br/> <br/> Every object (including any class object) delegates to an instance of<br/> its metaclass. You can get at the metaclass of any object via the<br/>-C&lt;HOW&gt; method. A &quot;class&quot; object is just considered an &quot;empty&quot;<br/>+C&lt;HOW&gt; method, which returns an instance of the metaclass. A &quot;class&quot; object is just considered an &quot;empty&quot;<br/> instance in Perl&nbsp;6, more properly called a &quot;prototype&quot; object, or just<br/> &quot;protoobject&quot;.<br/> The actual class object is the metaclass object pointed to by the<br/>@@ -133,7 +133,7 @@<br/> they are undefined. That&#39;s up to the object, and depends on how the<br/> metaclass chooses to dispatch the C&lt;.defined&gt; method.<br/> <br/>-The notation C&lt;^Dog&gt; is syntactic sugar for C&lt;Dog.HOW&gt;, so C&lt;^&gt; can be<br/>+The notation C&lt;^Dog&gt; is syntactic sugar for C&lt;Dog.HOW()&gt;, so C&lt;^&gt; can be<br/> considered the &quot;class&quot; sigil when you want to talk about the current<br/> metaclass instance.<br/> <br/>@@ -1871,8 +1871,11 @@<br/> <br/> which also bypasses the macros.<br/> <br/>-For now Perl&nbsp;6 reserves the right to change how all these macros and the<br/>-corresponding C&lt;^&gt; forms are defined in terms of each other.<br/>+For now Perl&nbsp;6 reserves the right to change how all these macros<br/>+and the corresponding C&lt;^&gt; forms are defined in terms of each other.<br/>+In particular, the C&lt;.^&gt; forms will automatically supply the invocant<br/>+as the first argument to methods of the metaclass, while the other<br/>+forms require you to pass this explicitly.<br/> <br/> In general, use of these in ordinary code should be a red flag that<br/> Something Very Strange is going on. (Hence the allcaps.) Most code<br/>@@ -1895,17 +1898,17 @@<br/> of the class:<br/> <br/> MyClass.methods() # call MyClass&#39;s .methods method (error?)<br/>- MyClass.HOW.methods() # get the method list of MyClass<br/>+ MyClass.HOW.methods($obj) # get the method list of MyClass<br/> <br/> The C&lt;^&gt; metasyntax is equivalent to C&lt;.HOW&gt;:<br/> <br/>- MyClass.HOW.methods() # get the method list of MyClass<br/>- ^MyClass.methods() # get the method list of MyClass<br/>- MyClass.^methods() # get the method list of MyClass<br/>+ MyClass.HOW.methods($obj) # get the method list of MyClass<br/>+ ^MyClass.methods($obj) # get the method list of MyClass<br/>+ MyClass.^methods() # get the method list of MyClass<br/> <br/> Each object of the class also has a C&lt;.HOW&gt; or C&lt;.^&gt; method:<br/> <br/>- $obj.HOW.methods();<br/>+ $obj.HOW.methods($obj);<br/> $obj.^methods();<br/> <br/> Class traits may include:<br/>@@ -1934,7 +1937,7 @@<br/> prototype objects, in which case stringification is not likely to<br/> produce something of interest to non-gurus.)<br/> <br/>-The C&lt;.HOW.methods&gt; method returns method-descriptors containing:<br/>+The C&lt;.^methods&gt; method returns method-descriptors containing:<br/> <br/> name the name of the method<br/> signature the parameters of the method<br/>@@ -1942,11 +1945,11 @@<br/> multi whether duplicate names are allowed<br/> do the method body<br/> <br/>-The C&lt;.methods&gt; method has a selector parameter that lets you<br/>+The C&lt;.^methods&gt; method has a selector parameter that lets you<br/> specify whether you want to see a flattened or hierarchical view,<br/> whether you&#39;re interested in private methods, and so forth.<br/> <br/>-The C&lt;.attributes&gt; method returns a list of attribute descriptors<br/>+The C&lt;.^attributes&gt; method returns a list of attribute descriptors<br/> that have traits like these:<br/> <br/> name<br/>@@ -1961,9 +1964,9 @@<br/> Strictly speaking, metamethods like C&lt;.isa()&gt;, C&lt;.does()&gt;, and C&lt;.can()&gt;<br/> should be called through the meta object:<br/> <br/>- $obj.HOW.can(&quot;bark&quot;)<br/>- $obj.HOW.does(Dog)<br/>- $obj.HOW.isa(Mammal)<br/>+ $obj.HOW.can($obj, &quot;bark&quot;)<br/>+ $obj.HOW.does($obj, Dog)<br/>+ $obj.HOW.isa($obj, Mammal)<br/> <br/> or<br/> <br/>@@ -1980,8 +1983,8 @@<br/> These, may, of course, be overridden in a subclass, so don&#39;t use the<br/> short form unless you wish to allow for overrides. In general, C&lt;Any&gt;<br/> will delegate only those metamethods that read well when reasoning<br/>-about an individual object. Infrastructural methods like C&lt;.methods&gt;<br/>-and C&lt;.attributes&gt; are not delegated, so C&lt;$obj.methods&gt; fails.<br/>+about an individual object. Infrastructural methods like C&lt;.^methods&gt;<br/>+and C&lt;.^attributes&gt; are not delegated, so C&lt;$obj.methods&gt; fails.<br/> <br/> The smartmatch:<br/> <br/>@@ -1989,16 +1992,16 @@<br/> <br/> actually calls:<br/> <br/>- $obj.HOW.does(Dog)<br/>+ $obj.HOW.does($obj, Dog)<br/> <br/> which is true if C&lt;$obj&gt; either &quot;does&quot; or &quot;isa&quot; C&lt;Dog&gt; (or &quot;isa&quot;<br/> something that &quot;does&quot; C&lt;Dog&gt;). If C&lt;Dog&gt; is a subset, any additional<br/> C&lt;where&gt; constraints must also evaluate true.<br/> <br/> Unlike in Perl&nbsp;5 where C&lt;.can&gt; returns a single C&lt;Code&gt; object,<br/>-Perl&nbsp;6&#39;s version of C&lt;.HOW.can&gt; returns a &quot;WALK&quot; iterator for a<br/>+Perl&nbsp;6&#39;s version of C&lt;.^can&gt; returns a &quot;WALK&quot; iterator for a<br/> set of routines that match the name, including all autoloaded and<br/>-wildcarded possibilities. In particular, C&lt;.can&gt; interrogates<br/>+wildcarded possibilities. In particular, C&lt;.^can&gt; interrogates<br/> any class package&#39;s C&lt;CANDO&gt; method for names that are to be considered autoloadable methods<br/> in the class, even if they haven&#39;t been declared yet. Role composition<br/> sometimes relies on this ability to determine whether a superclass supplies<br/></p> 2008-07-10T14:01:47Z [svn:perl6-synopsis] r14559 - doc/trunk/design/syn (1 message) PHA+RnJvbTogcG1pY2hhdWQKCkF1dGhvcjogcG1pY2hhdWQ8YnIvPkRhdGU6IFRodSBKdWwgMTAgMTM6MjI6MzAgMjAwODxici8+TmV3IFJldmlzaW9uOiAxNDU1OTxici8+PGJyLz5Nb2RpZmllZDo8YnIvPiAgIGRvYy90cnVuay9kZXNpZ24vc3luL1MxMi5wb2Q8YnIvPjxici8+TG9nOjxici8+UzEyOiAgUmVtb3ZlICZxdW90O21ldGhvZCBmYWxsIGJhY2sgdG8gc3Vicm91dGluZSZxdW90Oy48YnIvPjxici8+PGJyLz5Nb2RpZmllZDogZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzEyLnBvZDxici8+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PGJyLz4tLS0gZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzEyLnBvZAkob3JpZ2luYWwpPGJyLz4rKysgZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzEyLnBvZAlUaHUgSnVsIDEwIDEzOjIyOjMwIDIwMDg8YnIvPkBAIC0yMTAsOSArMjEwLDYgQEA8YnIvPiAgICAgJG9iai5kb2l0KDEsMiwzKTxici8+ICAgICBkb2l0ICRvYmo6IDEsMiwzPGJyLz4gPGJyLz4tSWYgdGhlIG1ldGhvZCB3YXMgbm90IGZvdW5kLCBpdCB3aWxsIGZhbGwgYmFjayB0byBhIHN1YnJvdXRpbmUgY2FsbDxici8+LWluc3RlYWQsIHdpdGggdGhlIGludm9jYW50IGJlY29taW5nIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50Ljxici8+LTxici8+IEluZGlyZWN0IG9iamVjdCBub3RhdGlvbiBub3cgcmVxdWlyZXMgYSBjb2xvbiBhZnRlciB0aGUgaW52b2NhbnQsPGJyLz4gZXZlbiBpZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzIGFmdGVyIHRoZSBjb2xvbjo8YnIvPiA8YnIvPjwvcD4= 2008-07-10T13:22:37Z Interrogating signatures (3 messages) PHA+RnJvbTogUGF0cmljayBSLiBNaWNoYXVkLCBKb25hdGhhbiBXb3J0aGluZ3RvbiwgTGFycnkgV2FsbAoKSGksPGJyLz48YnIvPklzIHRoZXJlIGFuIGludHJvc3BlY3Rpb24gaW50ZXJmYWNlIGZvciBzaWduYXR1cmVzIGRlZmluZWQgYW55d2hlcmU/IDxici8+SSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlIHN5bm9wc2VzIGFuZCBkb24mIzM5O3Qgc2VlIG9uZS4gSSYjMzk7bSB0aGlua2luZyB0aGluZ3MgPGJyLz5saWtlOjxici8+PGJyLz4qIENhbiB5b3UgZG8gLmFyaXR5IGFuZCAuY291bnQgb2YgYSBzaWduYXR1cmU/PGJyLz4qIENhbiB5b3UgaXRlcmF0ZSBvdmVyIGEgc2lnbmF0dXJlIHRvIGdldCBlYWNoIGVsZW1lbnQgaW4gdGhlcmU/PGJyLz4qIElmIHNvLCB3aGF0IHNvcnQgdGhpbmcgdGhpbmd5IHRvIHlvdSBnZXQgdG8gZGVzY3JpYmUgZWFjaCBlbGVtZW50PyA8YnIvPlNvbWUga2luZCBvZiBwYXJhbWV0ZXIgZGVzY3JpcHRvcj88YnIvPjxici8+VGhhbmtzLDxici8+PGJyLz5Kb25hdGhhbjxici8+PC9wPg== 2008-07-08T03:48:29Z [svn:perl6-synopsis] r14558 - doc/trunk/design/syn (1 message) PHA+RnJvbTogbGFycnkKCkF1dGhvcjogbGFycnk8YnIvPkRhdGU6IE1vbiBKdWwgIDcgMjE6NDA6MzMgMjAwODxici8+TmV3IFJldmlzaW9uOiAxNDU1ODxici8+PGJyLz5Nb2RpZmllZDo8YnIvPiAgIGRvYy90cnVuay9kZXNpZ24vc3luL1MwNS5wb2Q8YnIvPjxici8+TG9nOjxici8+bW9yZSBjbGFyaWZpY2F0aW9ucyBhbmQgcmVtZW1iZXIgdG8gdGhhbmsgY2pmaWVsZHMrKyB0aGlzIHRpbWUgOik8YnIvPjxici8+PGJyLz5Nb2RpZmllZDogZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzA1LnBvZDxici8+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PGJyLz4tLS0gZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzA1LnBvZAkob3JpZ2luYWwpPGJyLz4rKysgZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzA1LnBvZAlNb24gSnVsICA3IDIxOjQwOjMzIDIwMDg8YnIvPkBAIC0zNjkyLDYgKzM2OTIsOSBAQDxici8+IHRoZSBsb25nZXN0IG9uZSB3aW5zLiAgSW4gdGhlIGNhc2Ugb2YgdHdvIGlkZW50aWNhbCBzZXF1ZW5jZXMgdGhlPGJyLz4gZmlyc3QgaW4gb3JkZXIgd2lucy48YnIvPiA8YnIvPitBcyB3aXRoIHRoZSBzdHJpbmcgZm9ybSwgbWlzc2luZyByaWdodGhhbmQgZWxlbWVudHMgcmVwbGljYXRlIHRoZTxici8+K2ZpbmFsIGVsZW1lbnQsIGFuZCBhIG51bGwgYXJyYXkgcmVzdWx0cyBpbiBkZWxldGlvbiBpbnN0ZWFkLjxici8+Kzxici8+ID1pdGVtICo8YnIvPiA8YnIvPiBUaGUgcmVjb2duaXRpb24gZG9uZSBieSB0aGUgc3RyaW5nIGFuZCBhcnJheSBmb3JtcyBpcyB2ZXJ5IGJhc2ljLjxici8+QEAgLTM3MDMsNyArMzcwNiw4IEBAPGJyLz4gICAgICRzdHIuPXRyYW5zKCBbLyBcaCAvLCAgICYjMzk7Jmx0OyYjMzk7LCAgICAmIzM5OyZndDsmIzM5OywgICAgJiMzOTsmYW1wOyYjMzk7ICAgIF0gPSZndDs8YnIvPiAgICAgICAgICAgICAgICAgIFsmIzM5OyZhbXA7bmJzcDsmIzM5OywgJiMzOTsmYW1wO2x0OyYjMzk7LCAmIzM5OyZhbXA7Z3Q7JiMzOTssICYjMzk7JmFtcDthbXA7JiMzOTsgXSk7PGJyLz4gPGJyLz4tICAgICRzdHIuPXRyYW5zKCAvIFxzKyAvLCAmIzM5OyAmIzM5OyApOyAgIyBzcXVhc2ggYWxsIHdoaXRlc3BhY2UgdG8gb25lIHNwYWNlPGJyLz4rICAgICRzdHIuPXRyYW5zKCAvIFxzKyAvID0mZ3Q7ICYjMzk7ICYjMzk7ICk7ICAjIHNxdWFzaCBhbGwgd2hpdGVzcGFjZSB0byBvbmUgc3BhY2U8YnIvPisgICAgJHN0ci49dHJhbnMoIC8gJmx0OyFhbHBoYSZndDsgLyA9Jmd0OyAmIzM5OyYjMzk7ICk7ICAjIGRlbGV0ZSBhbGwgbm9uLWFscGhhPGJyLz4gPGJyLz4gVGhlc2Ugc3VibWF0Y2hlcyBhcmUgbWl4ZWQgaW50byB0aGUgb3ZlcmFsbCBtYXRjaCBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSB0aGF0PGJyLz4gdGhleSBhcmUgbWl4ZWQgaW50byBwYXJhbGxlbCBhbHRlcm5hdGlvbiBpbiBvcmRpbmFyeSByZWdleCBwcm9jZXNzaW5nLCBzbzxici8+PC9wPg== 2008-07-07T21:40:40Z [svn:perl6-synopsis] r14557 - doc/trunk/design/syn (1 message) PHA+RnJvbTogbGFycnkKCkF1dGhvcjogbGFycnk8YnIvPkRhdGU6IE1vbiBKdWwgIDcgMjE6MzA6MDggMjAwODxici8+TmV3IFJldmlzaW9uOiAxNDU1Nzxici8+PGJyLz5Nb2RpZmllZDo8YnIvPiAgIGRvYy90cnVuay9kZXNpZ24vc3luL1MwNS5wb2Q8YnIvPjxici8+TG9nOjxici8+Q2xhcmlmeSB0aGUgcm9sZSBvZiB3aGl0ZXNwYWNlIHdpdGhpbiB0cmFuc2xpdGVyYXRpb25zPGJyLz5Qb3dlciB1cCB0cmFuc2xpdGVyYXRpb25zIHdpdGggcmVnZXhlcyBhbmQgY2xvc3VyZXM8YnIvPkZvcm1hbGx5IGRlZmluZSB0aGUgaW1wbGllZCBhbHRlcm5hdGlvbiBhcyBlcXVpdmFsZW50IHRvIGxvbmdlc3QtdG9rZW4gbWF0Y2hpbmc8YnIvPjxici8+PGJyLz5Nb2RpZmllZDogZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzA1LnBvZDxici8+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PGJyLz4tLS0gZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzA1LnBvZAkob3JpZ2luYWwpPGJyLz4rKysgZG9jL3RydW5rL2Rlc2lnbi9zeW4vUzA1LnBvZAlNb24gSnVsICA3IDIxOjMwOjA4IDIwMDg8YnIvPkBAIC0xNCw5ICsxNCw5IEBAPGJyLz4gICAgTWFpbnRhaW5lcjogUGF0cmljayBNaWNoYXVkICZsdDtwbWljaGF1ZEBwb2JveC5jb20mZ3Q7IGFuZDxici8+ICAgICAgICAgICAgICAgIExhcnJ5IFdhbGwgJmx0O2xhcnJ5QHdhbGwub3JnJmd0Ozxici8+ICAgIERhdGU6IDI0IEp1biAyMDAyPGJyLz4tICAgTGFzdCBNb2RpZmllZDogMjEgSnVuIDIwMDg8YnIvPisgICBMYXN0IE1vZGlmaWVkOiA3IEp1bCAyMDA4PGJyLz4gICAgTnVtYmVyOiA1PGJyLz4tICAgVmVyc2lvbjogODI8YnIvPisgICBWZXJzaW9uOiA4Mzxici8+IDxici8+IFRoaXMgZG9jdW1lbnQgc3VtbWFyaXplcyBBcG9jYWx5cHNlIDUsIHdoaWNoIGlzIGFib3V0IHRoZSBuZXcgcmVnZXg8YnIvPiBzeW50YXguICBXZSBub3cgdHJ5IHRvIGNhbGwgdGhlbSBJJmx0O3JlZ2V4Jmd0OyByYXRoZXIgdGhhbiAmcXVvdDtyZWd1bGFyPGJyLz5AQCAtMzY2MSwxMiArMzY2MSwyNSBAQDxici8+IDxici8+ICAgICAgJHN0ci49dHJhbnMoICYjMzk7QSYjMzk7PSZndDsmIzM5O2EmIzM5OywgJiMzOTtCJiMzOTs9Jmd0OyYjMzk7YiYjMzk7LCAmIzM5O0MmIzM5Oz0mZ3Q7JiMzOTtjJiMzOTsgKTs8YnIvPiA8YnIvPitXaGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXJlIHRha2VuIGxpdGVyYWxseSBhcyBjaGFyYWN0ZXJzIHRvIGJlPGJyLz4rdHJhbnNsYXRlZCBmcm9tIG9yIHRvLiAgVGhlIEMmbHQ7Li4mZ3Q7IHJhbmdlIHNlcXVlbmNlIGlzIHRoZSBvbmx5IG1ldGFzeW50YXg8YnIvPityZWNvZ25pemVkIHdpdGhpbiBhIHN0cmluZywgdGhvdWdoIHlvdSBtYXkgb2YgY291cnNlIHVzZSBiYWNrc2xhc2g8YnIvPitpbnRlcnBvbGF0aW9ucyBpbiBkb3VibGUgcXVvdGVzLiAgSWYgdGhlIHJpZ2h0IHNpZGUgaXMgdG9vIHNob3J0LCB0aGU8YnIvPitmaW5hbCBjaGFyYWN0ZXIgaXMgcmVwbGljYXRlZCBvdXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbGVmdCBzdHJpbmcuPGJyLz4rSWYgdGhlcmUgaXMgbm8gZmluYWwgY2hhcmFjdGVyIGJlY2F1c2UgdGhlIHJpZ2h0IHNpZGUgaXMgdGhlIG51bGw8YnIvPitzdHJpbmcsIHRoZSByZXN1bHQgaXMgZGVsZXRpb24gaW5zdGVhZC48YnIvPis8YnIvPiA9aXRlbSAqPGJyLz4gPGJyLz4tVGhlIHR3byBzaWRlcyBvZiBlYWNoIHBhaXIgbWF5IGFsc28gYmUgQXJyYXkgb2JqZWN0czo8YnIvPitFaXRoZXIgb3IgYm90aCBzaWRlcyBvZiB0aGUgcGFpciBtYXkgYWxzbyBiZSBBcnJheSBvYmplY3RzOjxici8+IDxici8+ICAgICAgJHN0ci49dHJhbnMoIFsmIzM5O0EmIzM5Oy4uJiMzOTtDJiMzOTtdID0mZ3Q7IFsmIzM5O2EmIzM5Oy4uJiMzOTtjJiMzOTtdLCAmbHQ7WCBZIFomZ3Q7ID0mZ3Q7ICZsdDt4IHkgeiZndDsgKTs8YnIvPiA8YnIvPitUaGUgYXJyYXkgdmVyc2lvbiBpcyB0aGUgdW5kZXJseWluZyBwcmltaXRpdmUgZm9ybTogdGhlIHNlbWFudGljcyBvZjxici8+K3RoZSBzdHJpbmcgZm9ybSBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gZmlyc3QgZG9pbmcgQyZsdDsuLiZndDsgZXhwYW5zaW9uPGJyLz4rYW5kIHRoZW4gc3BsaXR0aW5nIHRoZSBzdHJpbmcgaW50byBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgYW5kIHRoZW48YnIvPit1c2luZyB0aGF0IGFzIGFuIGFycmF5Ljxici8+Kzxici8+ID1pdGVtICo8YnIvPiA8YnIvPiBUaGUgYXJyYXkgdmVyc2lvbiBjYW4gbWFwIG9uZS1vci1tb3JlIGNoYXJhY3RlcnMgdG8gb25lLW9yLW1vcmU8YnIvPkBAIC0zNjc1LDExICszNjg4LDM2IEBAPGJyLz4gICAgICAkc3RyLj10cmFucyggWyYjMzk7ICYjMzk7LCAgICAgICYjMzk7Jmx0OyYjMzk7LCAgICAmIzM5OyZndDsmIzM5OywgICAgJiMzOTsmYW1wOyYjMzk7ICAgIF0gPSZndDs8YnIvPiAgICAgICAgICAgICAgICAgICBbJiMzOTsmYW1wO25ic3A7JiMzOTssICYjMzk7JmFtcDtsdDsmIzM5OywgJiMzOTsmYW1wO2d0OyYjMzk7LCAmIzM5OyZhbXA7YW1wOyYjMzk7IF0pOzxici8+IDxici8+LTxici8+IEluIHRoZSBjYXNlIHRoYXQgbW9yZSB0aGFuIG9uZSBzZXF1ZW5jZSBvZiBpbnB1dCBjaGFyYWN0ZXJzIG1hdGNoZXMsPGJyLz4gdGhlIGxvbmdlc3Qgb25lIHdpbnMuICBJbiB0aGUgY2FzZSBvZiB0d28gaWRlbnRpY2FsIHNlcXVlbmNlcyB0aGU8YnIvPiBmaXJzdCBpbiBvcmRlciB3aW5zLjxici8+IDxici8+Kz1pdGVtICo8YnIvPis8YnIvPitUaGUgcmVjb2duaXRpb24gZG9uZSBieSB0aGUgc3RyaW5nIGFuZCBhcnJheSBmb3JtcyBpcyB2ZXJ5IGJhc2ljLjxici8+K1RvIGFjaGlldmUgZ3JlYXRlciBwb3dlciwgYW55IHJlY29nbml0aW9uIGVsZW1lbnQgb2YgdGhlIGxlZnQgc2lkZTxici8+K21heSBiZSBzcGVjaWZpZWQgYnkgYSByZWdleCB0aGF0IGNhbiBkbyBjaGFyYWN0ZXIgY2xhc3NlcywgbG9va2FoZWFkLDxici8+K2V0Yy48YnIvPis8YnIvPis8YnIvPisgICAgJHN0ci49dHJhbnMoIFsvIFxoIC8sICAgJiMzOTsmbHQ7JiMzOTssICAgICYjMzk7Jmd0OyYjMzk7LCAgICAmIzM5OyZhbXA7JiMzOTsgICAgXSA9Jmd0Ozxici8+KyAgICAgICAgICAgICAgICAgWyYjMzk7JmFtcDtuYnNwOyYjMzk7LCAmIzM5OyZhbXA7bHQ7JiMzOTssICYjMzk7JmFtcDtndDsmIzM5OywgJiMzOTsmYW1wO2FtcDsmIzM5OyBdKTs8YnIvPis8YnIvPisgICAgJHN0ci49dHJhbnMoIC8gXHMrIC8sICYjMzk7ICYjMzk7ICk7ICAjIHNxdWFzaCBhbGwgd2hpdGVzcGFjZSB0byBvbmUgc3BhY2U8YnIvPis8YnIvPitUaGVzZSBzdWJtYXRjaGVzIGFyZSBtaXhlZCBpbnRvIHRoZSBvdmVyYWxsIG1hdGNoIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IHRoYXQ8YnIvPit0aGV5IGFyZSBtaXhlZCBpbnRvIHBhcmFsbGVsIGFsdGVybmF0aW9uIGluIG9yZGluYXJ5IHJlZ2V4IHByb2Nlc3NpbmcsIHNvPGJyLz4rbG9uZ2VzdCB0b2tlbiBydWxlcyBhcHBseSBhY3Jvc3MgYWxsIHRoZSBwb3NzaWJsZSBtYXRjaGVzIHNwZWNpZmllZCB0byB0aGU8YnIvPit0cmFuc2xpdGVyYXRpb24gb3BlcmF0b3IuICBPbmNlIGEgbWF0Y2ggaXMgbWFkZSBhbmQgdHJhbnNsaXRlcmF0ZWQsIHRoZSBwYXJhbGxlbDxici8+K21hdGNoaW5nIHJlc3VtZXMgYXQgdGhlIG5ldyBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbWF0Y2gsPGJyLz4rZXZlbiBpZiBpdCBtYXRjaGVkIG11bHRpcGxlIGNoYXJhY3RlcnMuPGJyLz4rPGJyLz4rPWl0ZW0gKjxici8+Kzxici8+K0lmIHRoZSByaWdodCBzaWRlIG9mIHRoZSBhcnJvdyBpcyBhIGNsb3N1cmUsIGl0IGlzIGV2YWx1YXRlZCB0bzxici8+K2RldGVybWluZSB0aGUgcmVwbGFjZW1lbnQgdmFsdWUuICBJZiB0aGUgbGVmdCBzaWRlIHdhcyBtYXRjaGVkIGJ5IGE8YnIvPityZWdleCwgdGhlIHJlc3VsdGluZyBtYXRjaCBvYmplY3QgaXMgYXZhaWxhYmxlIHdpdGhpbiB0aGUgY2xvc3VyZS48YnIvPis8YnIvPiA9YmFjazxici8+IDxici8+ID1oZWFkMSBTdWJzdGl0dXRpb248YnIvPjwvcD4= 2008-07-07T21:30:18Z spaces and transliteration (2 messages) PHA+RnJvbTogQ2hyaXMgRmllbGRzCgpJIGFtIHdvcmtpbmcgb24gdGhlIHRyYW5zbGl0ZXJhdGlvbiBtZXRob2Qgb3BlcmF0b3IgKHRyYW5zKCkpIGZvciAgPGJyLz5SYWt1ZG8gYW5kIHdhbnRlZCB0byBnZXQgc29tZSBpbnB1dCBvbiBob3cgY2hhcmFjdGVyIHJhbmdlcyBhcmUgdG8gYmUgIDxici8+dXNlZC48YnIvPjxici8+U2hvdWxkIHNwYWNlcyBiZSBpZ25vcmVkIGluIHJhbmdlcyBsaWtlICYjMzk7QSAuLiBaJiMzOTs/ICBDdXJyZW50bHkgdGhlICA8YnIvPmltcGxlbWVudGF0aW9uIEkgaGF2ZSBpZ25vcmVzIHRob3NlIHNwYWNlcyBidXQgY291bnRzIGFueSBvdGhlciBzcGFjZXMgIDxici8+YXMgaW1wb3J0YW50LCBzbyAodXNpbmcgcGFycm90IHBlcmw2LnBiYyB3aXRoIG15IHBhdGNoKTo8YnIvPjxici8+ICZndDsgc2F5ICZxdW90O1doZmcgbmFiZ3VyZSBDcmV5IHVucHhyZSZxdW90Oy50cmFucygmIzM5OyBhIC4uIHomIzM5OyA9Jmd0OyAmIzM5O19uIC4uIHphIC4uIG0mIzM5OywgIDxici8+JiMzOTtBIC4uIFomIzM5OyA9Jmd0OyAmIzM5O04gLi4gWkEgLi4gTSYjMzk7KTxici8+SnVzdF9hbm90aGVyX1BlcmxfaGFja2VyPGJyLz48YnIvPmNocmlzPGJyLz48L3A+ 2008-07-07T10:51:13Z RE: [svn:parrot] r28689 - trunk/languages/perl6/t ("-" versus "_") (3 messages)

From: Conrad Schneiker, Moritz Lenz, Bob Rogers > Moritz Lenz wrote (on perl6-compiler)
> Patrick R. Michaud wrote:
> >> +S02-builtin_data_types/num.t
> >> S02-builtin_data_types/type.t
> >> S02-literals/autoref.t
> >> S02-literals/hex_chars.t # pure
> >> S02-literals/radix.t
> >> S02-polymorphic_types/subset-code.t # pure
> >> S02-polymorphic_types/subset-range.t
> >> +S03-operators/assign-is-not-binding.t
> >> S03-operators/autoincrement.t # pure
> >> S03-operators/comparison.t
> >> S03-operators/context.t
> >
> > In the test suite, could we perhaps aim for some
> > consistency on the use of hyphens versus underscores,
> > or at least articulate when one is used versus the other?
> > For example, "assign-is-not-binding.t" versus "hex_chars.t"
> > in the above.
> >
> > Personally I vastly prefer hyphens to underscores,
>
> Same here. Since the directly names already match m/^S\d\d-/ I'll
> assume
> that will be our standard.
>
> > but I
> > suspect people have good reasons for preferring underscores.

One reason (probably not a good one) is to use the same
convention as programming language variable names (which is
typically more of a "CamelCase" versus "not_Camel_case" issue).

Likewise, I suspect some people would also prefer hyphens to
either {underscores or CamelCase} in variable names as well (as
in Lisp).

So would a user-supplied Perl 6 syntax-morphing module to allow
use of embedded-hyphens in variable names (and other names, such
as labels and subs) to Perl 6 (with minimally-sane adjustments
needed to make hyphen-related operator parsing unambiguous) be
reasonably feasible? Or does this open a messy Pandora's box of
cascading language-redesign kludges?

(I suspect similar issues came up in language design discussions,
but my initial searches didn't turn up anything directly
relevant.)

Best regards,
Conrad Schneiker

www.AthenaLab.com

Official Perl 6 Wiki - http://www.perlfoundation.org/perl6
Official Parrot Wiki - http://www.perlfoundation.org/parrot


2008-07-02T12:26:25Z
Should C<grep> and C<reverse> work in C<Any> ? (10 messages)

From: Patrick R. Michaud, Ovid, Trey Harris, Moritz Lenz Do C<grep> and C<reverse> act like the C<join> method, in that
they work for C<Any> object and not just objects of type C<List>?

In other words,, should C< $x.grep(...) > work even if
$x isn't normally a list type?

Pm

2008-06-29T14:23:52Z
Re: Rakudo test miscellanea (20 messages)

From: Moritz Lenz, Mark J. Reed, Larry Wall, Aristotle Pagaltzis Most financial institutions don't use float, rational or fixed point, they just keep integer pennies.

--
Mark Biggar
mark@biggar.org
mark.a.biggar@comcast.net
mbiggar@paypal.com

-------------- Original message ----------------------
From: Larry Wall <larry@wall.org>

> Would any financial institution care to comment?
>
> Larry

2008-06-26T10:31:28Z
Type of literals (3 messages)

From: Moritz Lenz, Daniel Ruoso, Larry Wall In the test suite there are some tests like this:
is(1.WHAT, 'Int', '1 as a literal is an Int);

This seems to imply that we guarantee the direct type of literals. But
do we?

Actually I see no need for that. All my programs work fine if the
literal 1 is of type Foo, and Foo isa Int.

What's our policy on that? Will a 1.WHAT always return Int? do we
guarantee (1..4).WHAT always to be 'Range'?

Cheers,
Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

2008-06-26T06:45:33Z
Re: [perl #56230] [PATCH] Multimethods for Complex. (1 message)

From: Moritz Lenz Another question:

Vasily Chekalkin (via RT) wrote:
> +.sub 'sqrt' :multi(Complex)
> + .param pmc a
> + a = sqrt a
> + .return (a)
> +.end

Do we actually want a sqrt(Complex)? Somebody who is sufficiently
mathematically educated to work with complex numbers should now that
sqrt() is ambigous, because there are two possible results, and will
revert to roots() for that.

Any thoughts?

Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

2008-06-26T03:48:36Z
.join on Array (2 messages)

From: Patrick R. Michaud, Moritz Lenz Following up to a thread on p6c regarding method fallbacks and .join:

* What should [1,3,5].join('-') produce?

* How about ([1,3,5], 20).join('-') ?

Thanks!

Pm

2008-06-26T00:30:09Z
Building Junctions from Junctions (2 messages)

From: Ovid, Jon Lang Hi all,

I use Perl6::Junction in Perl 5 and recently the author implemented the
"values" method on junctions. I needed this because I sometimes find
that I need to do something conceptually similar to this:

my $number = any( 0 .. 19 );
while ($number->values) {
my $rand int(rand(20));
if ( $number == $random_number ) {

# handle some task and discard the number
$number = any( grep { $_ != $rand } $number->values );
}
}

In other words, sometimes I have code which receives a junction and
needs to provide a new junction based on the values of the old
junction, but with some values removed.

How do I do that in Perl 6? I can't see that in the docs. Clearly we
don't this to be done destructively as I suspect this will break
autothreading, but building new junctions based on old junctions seems
reasonable.

Cheers,
Ovid

--
Buy the book - http://www.oreilly.com/catalog/perlhks/
Personal blog - http://publius-ovidius.livejournal.com/
Tech blog - http://use.perl.org/~Ovid/journal/
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6
Official Parrot Wiki - http://www.perlfoundation.org/parrot

2008-06-23T04:05:19Z
[svn:perl6-synopsis] r14556 - doc/trunk/design/syn (1 message) <p>From: larry Author: larry<br/>Date: Sat Jun 21 18:28:14 2008<br/>New Revision: 14556<br/><br/>Modified:<br/> doc/trunk/design/syn/S03.pod<br/><br/>Log:<br/>clarifications requested by pmichaud++<br/><br/><br/>Modified: doc/trunk/design/syn/S03.pod<br/>==============================================================================<br/>--- doc/trunk/design/syn/S03.pod (original)<br/>+++ doc/trunk/design/syn/S03.pod Sat Jun 21 18:28:14 2008<br/>@@ -12,9 +12,9 @@<br/> <br/> Maintainer: Larry Wall &lt;larry@wall.org&gt;<br/> Date: 8 Mar 2004<br/>- Last Modified: 11 Jun 2008<br/>+ Last Modified: 21 Jun 2008<br/> Number: 3<br/>- Version: 136<br/>+ Version: 137<br/> <br/> =head1 Overview<br/> <br/>@@ -1753,7 +1753,8 @@<br/> <br/> item foo()<br/> <br/>-The new name for Perl&nbsp;5&#39;s C&lt;scalar&gt; contextualizer. Equivalent to C&lt;$()&gt;.<br/>+The new name for Perl&nbsp;5&#39;s C&lt;scalar&gt; contextualizer. Equivalent to C&lt;$()&gt;<br/>+(except that empty C&lt;$()&gt; means C&lt;$($/)&gt;, while empty C&lt;item()&gt; yields C&lt;Failure&gt;).<br/> We still call the values scalars, and talk about &quot;scalar operators&quot;, but<br/> scalar operators are those that put their arguments into item context.<br/> <br/>@@ -1761,6 +1762,10 @@<br/> is agnostic about any C&lt;Captures&gt; in such a list. (Use C&lt;@&gt; or C&lt;@@&gt;<br/> below to force that one way or the other).<br/> <br/>+Note that this is a list operator, not a unary prefix operator,<br/>+since you&#39;d generally want it for converting a list to an item.<br/>+Single items don&#39;t need to be converted to items.<br/>+<br/> =item *<br/> <br/> The C&lt;list&gt; contextualizer<br/>@@ -1769,7 +1774,8 @@<br/> <br/> Forces the subsequent expression to be evaluated in list context.<br/> A list of C&lt;Capture&gt;s will be transformed into a flat list.<br/>-Equivalent to C&lt;@()&gt;.<br/>+Equivalent to C&lt;@()&gt; (except that empty C&lt;@()&gt; means C&lt;@($/)&gt;, while<br/>+empty C&lt;list()&gt; means an empty list).<br/> <br/> =item *<br/> <br/>@@ -1780,7 +1786,8 @@<br/> Forces the subsequent expression to be evaluated in slice context.<br/> (Slices are considered to be potentially multidimensional in Perl&nbsp;6.)<br/> A list of C&lt;Capture&gt;s will be transformed into a list of lists.<br/>-Equivalent to C&lt;@@()&gt;.<br/>+Equivalent to C&lt;@@()&gt; (except that empty C&lt;@@()&gt; means C&lt;@@($/)&gt;, while<br/>+empty C&lt;slice()&gt; means a null slice).<br/> <br/> =item *<br/> <br/>@@ -1793,7 +1800,8 @@<br/> then a hash will be created from the list, taken as a list of C&lt;Pair&gt;s.<br/> (Any element in the list that is not a C&lt;Pair&gt; will pretend to be a key<br/> and grab the next value in the last as its value.) Equivalent to<br/>-C&lt;%()&gt;.<br/>+C&lt;%()&gt; (except that empty C&lt;%()&gt; means C&lt;%($/)&gt;, while<br/>+empty C&lt;hash()&gt; means an empty hash).<br/> <br/> =back<br/> <br/></p> 2008-06-21T18:28:23Z [svn:perl6-synopsis] r14555 - doc/trunk/design/syn (1 message) PHA+RnJvbTogbGFycnkKCkF1dGhvcjogbGFycnk8YnIvPkRhdGU6IFNhdCBKdW4gMjEgMTc6NDM6MTUgMjAwODxici8+TmV3IFJldmlzaW9uOiAxNDU1NTxici8+PGJyLz5Nb2RpZmllZDo8YnIvPiAgIGRvYy90cnVuay9kZXNpZ24vc3luL1MwNS5wb2Q8YnIvPjxici8+TG9nOjxici8+Y2xhcmlmaWNhdGlvbnMgcmVxdWVzdGVkIGJ5IGNvZ25vbWluYWwrKzxici8+PGJyLz48YnIvPk1vZGlmaWVkOiBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDUucG9kPGJyLz49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnIvPi0tLSBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDUucG9kCShvcmlnaW5hbCk8YnIvPisrKyBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDUucG9kCVNhdCBKdW4gMjEgMTc6NDM6MTUgMjAwODxici8+QEAgLTE0LDkgKzE0LDkgQEA8YnIvPiAgICBNYWludGFpbmVyOiBQYXRyaWNrIE1pY2hhdWQgJmx0O3BtaWNoYXVkQHBvYm94LmNvbSZndDsgYW5kPGJyLz4gICAgICAgICAgICAgICAgTGFycnkgV2FsbCAmbHQ7bGFycnlAd2FsbC5vcmcmZ3Q7PGJyLz4gICAgRGF0ZTogMjQgSnVuIDIwMDI8YnIvPi0gICBMYXN0IE1vZGlmaWVkOiAxMSBKdW4gMjAwODxici8+KyAgIExhc3QgTW9kaWZpZWQ6IDIxIEp1biAyMDA4PGJyLz4gICAgTnVtYmVyOiA1PGJyLz4tICAgVmVyc2lvbjogODE8YnIvPisgICBWZXJzaW9uOiA4Mjxici8+IDxici8+IFRoaXMgZG9jdW1lbnQgc3VtbWFyaXplcyBBcG9jYWx5cHNlIDUsIHdoaWNoIGlzIGFib3V0IHRoZSBuZXcgcmVnZXg8YnIvPiBzeW50YXguICBXZSBub3cgdHJ5IHRvIGNhbGwgdGhlbSBJJmx0O3JlZ2V4Jmd0OyByYXRoZXIgdGhhbiAmcXVvdDtyZWd1bGFyPGJyLz5AQCAtMzkxLDcgKzM5MSw3IEBAPGJyLz4gPGJyLz4gaXMgZXF1aXZhbGVudCB0byB0aGUgUGVybCZuYnNwOzYgc3ludGF4Ojxici8+IDxici8+LSAgICBtLyA6aSBeXiBbICZsdDtbYS4uel0mZ3Q7IHx8IFxkIF0gKiogMS4uMiAmbHQ7YmVmb3JlIFxzJmd0OyAvPGJyLz4rICAgIG0vIDppIF5eIFsgJmx0O1thLi56XSZndDsgfHwgXGQgXSAqKiAxLi4yICZsdDs/YmVmb3JlIFxzJmd0OyAvPGJyLz4gPGJyLz4gPWl0ZW0gKjxici8+IDxici8+QEAgLTEzOTksNiArMTM5OSwxMSBAQDxici8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnQgZm9yICZsdDs/eyAucG9zID09PSAkcG9zIH0mZ3Q7PGJyLz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY29uc2lkZXJlZCBkZWNsYXJhdGl2ZSB1bnRpbCAkcG9zIGNoYW5nZXMpPGJyLz4gPGJyLz4rSXQgaXMgbGVnYWwgdG8gdXNlIGFueSBvZiB0aGVzZSBhc3NlcnRpb25zIGFzIG5hbWVkIGNhcHR1cmVzIGJ5IG9taXR0aW5nIHRoZTxici8+K3B1bmN0dWF0aW9uIGF0IHRoZSBmcm9udC4gIEhvd2V2ZXIsIGNhcHR1cmUgZW50YWlscyBzb21lIG92ZXJoZWFkIGluIGJvdGg8YnIvPittZW1vcnkgYW5kIGNvbXB1dGF0aW9uLCBzbyBpbiBnZW5lcmFsIHlvdSB3YW50IHRvIHN1cHByZXNzIHRoYXQgZm9yIGRhdGE8YnIvPit5b3UgYXJlbiYjMzk7dCBpbnRlcmVzdGVkIGluIHByZXNlcnZpbmcuPGJyLz4rPGJyLz4gVGhlIEMmbHQ7YWZ0ZXImZ3Q7IGFzc2VydGlvbiBpbXBsZW1lbnRzIGxvb2tiZWhpbmQgYnkgcmV2ZXJzaW5nIHRoZSBzeW50YXg8YnIvPiB0cmVlIGFuZCBsb29raW5nIGZvciB0aGluZ3MgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIGdvaW5nIHRvIHRoZSBsZWZ0Ljxici8+IEl0IGlzIGlsbGVnYWwgdG8gZG8gbG9va2JlaGluZCBvbiBhIHBhdHRlcm4gdGhhdCBjYW5ub3QgYmUgcmV2ZXJzZWQuPGJyLz5AQCAtMTUzNCw3ICsxNTM5LDcgQEA8YnIvPiA8YnIvPiBpcyBlcXVpdmFsZW50IHRvOjxici8+IDxici8+LSAgICAvICZsdDthZnRlciBmb28mZ3Q7IFxkKyAmbHQ7YmVmb3JlIGJhciZndDsgLzxici8+KyAgICAvICZsdDs/YWZ0ZXIgZm9vJmd0OyBcZCsgJmx0Oz9iZWZvcmUgYmFyJmd0OyAvPGJyLz4gPGJyLz4gZXhjZXB0IHRoYXQgdGhlIHNjYW4gZm9yICZxdW90O0MmbHQ7Zm9vJmd0OyZxdW90OyBjYW4gYmUgZG9uZSBpbiB0aGUgZm9yd2FyZCBkaXJlY3Rpb24sPGJyLz4gd2hpbGUgYSBsb29rYmVoaW5kIGFzc2VydGlvbiB3b3VsZCBwcmVzdW1hYmx5IHNjYW4gZm9yIEMmbHQ7XGQrJmd0OyBhbmQgdGhlbjxici8+QEAgLTM0MjYsNyArMzQzMSw3IEBAPGJyLz4gU3ViY2FwdHVyZXMgYXJlIHJldHVybmVkIGFzIGEgbXVsdGlkaW1lbnNpb25hbCBsaXN0LCB3aGljaCB0aGUgdXNlciBjYW48YnIvPiBjaG9vc2UgdG8gcHJvY2VzcyBpbiBlaXRoZXIgb2YgdHdvIHdheXMuICBJZiB5b3UgcmVmZXIgdG88YnIvPiBDJmx0O0AoKSZndDssIHRoZSBtdWx0aWRpbWVuc2lvbmFsaXR5IGlzIGlnbm9yZWQgYW5kIGFsbCB0aGUgbWF0Y2hlcyBhcmUgcmV0dXJuZWQ8YnIvPi1mbGF0dGVuZWQgKGJ1dCBzdGlsbCBsYXppbHkpLiAgSWYgeW91IHJlZmVyIHRvIEBAKCksIHlvdSBjYW48YnIvPitmbGF0dGVuZWQgKGJ1dCBzdGlsbCBsYXppbHkpLiAgSWYgeW91IHJlZmVyIHRvIEMmbHQ7QEAoKSZndDssIHlvdSBjYW48YnIvPiBnZXQgZWFjaCBpbmRpdmlkdWFsIHN1Ymxpc3QgYXMgYSBDYXB0dXJlIG9iamVjdC4gKFRoYXQgaXMsIHRoZXJlIGlzIGEgQyZsdDtAQCgpJmd0Ozxici8+IGNvZXJjaW9uIG9wZXJhdG9yIHRoYXQgaGFwcGVucywgbGlrZSBDJmx0O0AoKSZndDssIHRvIGRlZmF1bHQgdG8gQyZsdDskLyZndDsuKTxici8+IEFzIHdpdGggYW55IG11bHRpZGltZW5zaW9uYWwgbGlzdCwgZWFjaCBzdWJsaXN0IGNhbiBiZSBsYXp5IHNlcGFyYXRlbHkuPGJyLz5AQCAtMzU4Myw2ICszNTg4LDEzIEBAPGJyLz4gPGJyLz4gPWJhY2s8YnIvPiA8YnIvPis9aXRlbSAqPGJyLz4rPGJyLz4rVG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IGdyYW1tYXIgaW4gdGhlIG1pZGRsZSBvZiBhIHJlZ2V4LCB5b3UgbWF5IHVzZSB0aGUgQyZsdDs6bGFuZyZndDsgYWR2ZXJiLjxici8+K0ZvciBleGFtcGxlLCB0byBtYXRjaCBhbiBleHByZXNzaW9uICZsdDtleHByJmd0OyBmcm9tICRmdW5ueWxhbmcgdGhhdCBpcyBlbWJlZGRlZCBpbiBjdXJsaWVzLCBzYXk6PGJyLz4rPGJyLz4rICAgIHRva2VuIGZ1bm55bGFuZyB7ICYjMzk7eyYjMzk7IFsgOmxhbmcoJGZ1bm55bGFuZy51bmJhbGFuY2VkKCYjMzk7fSYjMzk7KSkgJmx0O2V4cHImZ3Q7IF0gJiMzOTt9JiMzOTsgfTxici8+Kzxici8+ID1oZWFkMSBTeW50YWN0aWMgY2F0ZWdvcmllczxici8+IDxici8+IEZvciB3cml0aW5nIHlvdXIgb3duIGJhY2tzbGFzaCBhbmQgYXNzZXJ0aW9uIHN1YnJ1bGVzIG9yIG1hY3JvcywgeW91IG1heTxici8+PC9wPg== 2008-06-21T17:43:23Z <before ...> and <after ... > in S05 (2 messages) PHA+RnJvbTogY29nbm9taW5hbCwgTGFycnkgV2FsbAoKQyZsdDtiZWZvcmUmZ3Q7IGFuZCAmbHQ7YWZ0ZXImZ3Q7IGJlaW5nIHplcm8gd2lkdGggYXNzZXJ0aW9ucyAsIEkgdGhpbmsgdGhleSBtdXN0PGJyLz5hbHdheXMgYmUgY2FsbGVkIHdpdGg8YnIvPmEgcXVlc3Rpb24gbWFyay4gVGhpcyBpcyBub3QgdGhlIGNhc2UgbGluZSAzOTQgYW5kIDE1MzcuPGJyLz5QZXJsamFtICBzdWdnZXN0ZWQgdGhhdCBhIHplcm8gd2lkdGggYXNzZXJ0aW9uIGNhbiBiZSBhbHNvIGEgY2FwdHVyaW5nPGJyLz5vbmUgYW5kIHRoYXQ8YnIvPmNvdWxkIGV4cGxhaW4gdGhlIGRyb3BwaW5nIG9mIHRoZSBxdWVzdGlvbiBtYXJrLiBJIGRvbiYjMzk7dCBhZ3JlZSB3aXRoPGJyLz50aGF0IHN1Z2dlc3Rpb24uPGJyLz5Bbnl3YXkgdGhlIGV4YW1wbGVzIGdpdmVuIGxpbmUgMzk0IGFuZCAxNTM3IGRvbiYjMzk7dCBpbnZvbHZlIGNhcHR1cmUuPGJyLz48YnIvPlRoaXMgd2FzIGRpc2N1c3NlZCBpbiAjcGVybDYgc3RhcnRpbmcgaHR0cDovL2lyY2xvZy5wZXJsZ2Vlay5kZS9wZXJsNi8yMDA4LTA2LTIwI2lfMzU3MjcxPGJyLz48YnIvPjwvcD4= 2008-06-21T16:53:49Z possible clarification of item(), list(), etc. (1 message) PHA+RnJvbTogUGF0cmljayBSLiBNaWNoYXVkCgpJIHRoaW5rIHdlIG5lZWQgYSBzbGlnaHQgd29yZGluZyBpbXByb3ZlbWVudCBpbiBTMDMuICBDdXJyZW50bHkgUzAzOjE3NzI8YnIvPnNheXMgdGhhdCB0aGUgQyZsdDtsaXN0Jmd0OyBjb250ZXh0dWFsaXplciBpcyBlcXVpdmFsZW50IHRvIEMmbHQ7QCgpJmd0Oy4gIDxici8+SG93ZXZlciwgUzA1OjIzMjggYWxzbyBzYXlzIHRoYXQgQyZsdDtAKCkmZ3Q7IGlzIGEgc2hvcnRoYW5kIGZvciBDJmx0O0AoJC8pJmd0Oy48YnIvPjxici8+VGFrZW4gdG9nZXRoZXIsIHRoZXNlIHdvdWxkIHNlZW0gdG8gaW1wbHkgdGhhdCBDJmx0O2xpc3QoKSZndDsgaXMgZXF1aXZhbGVudDxici8+dG8gQyZsdDtAKCQvKSZndDssIHdoaWNoIEkgc3VzcGVjdCBpcyBub3QgdGhlIGNhc2UuICAoSSB3b3VsZCBleHBlY3Q8YnIvPkMmbHQ7bGlzdCgpJmd0OyB0byByZXR1cm4gYW4gZW1wdHkgTGlzdC4pPGJyLz48YnIvPkkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBTMDMgc2hvdWxkIGJlIGNsYXJpZmllZCB0byBzYXkgc29tZXRoaW5nIGxpa2UgdGhlPGJyLz5saXN0IGNvbnRleHR1YWxpemVyIGlzIGVxdWl2YWxlbnQgdG8gQyZsdDtAKC4uLikmZ3Q7LCB0byBtYWtlIGl0IGNsZWFyZXIoPyk8YnIvPnRoYXQgaXQmIzM5O3MgdGhlIGZvcm0gdGhhdCBleHBlY3RzIGFuIGFyZ3VtZW50Ljxici8+PGJyLz5JZiB0aGUgYWJvdmUgaXMgY29ycmVjdCBmb3IgQyZsdDtsaXN0Jmd0OywgdGhlbiBzaW1pbGFyIGFyZ3VtZW50cyBjYW48YnIvPmxpa2VseSBiZSBtYWRlIGZvciBDJmx0O2l0ZW0mZ3Q7IC8gQyZsdDskKCkmZ3Q7IGFuZCBDJmx0O2hhc2gmZ3Q7IC8gQyZsdDslKCkmZ3Q7Ljxici8+PGJyLz5PbiBhIHNpbWlsYXIgdmVpbiwgaXMgQyZsdDtpdGVtJmd0OyBhIG5hbWVkIHVuYXJ5PyAgSW4gb3RoZXIgd29yZHMsIGlzPGJyLz5DJmx0OyBpdGVtICRhLCAkYiAmZ3Q7ICBlcXVpdmFsZW50IHRvIEMmbHQ7IGl0ZW0oJGEpLCAkYiAmZ3Q7ICBvciA8YnIvPkMmbHQ7IGl0ZW0oJGEsJGIpICZndDsgPzxici8+PGJyLz5UaGFua3MhPGJyLz48YnIvPlBtPGJyLz48L3A+ 2008-06-21T13:56:45Z [svn:perl6-synopsis] r14554 - doc/trunk/design/syn (1 message) PHA+RnJvbTogcG1pY2hhdWQKCkF1dGhvcjogcG1pY2hhdWQ8YnIvPkRhdGU6IEZyaSBKdW4gMjAgMTk6NTc6MjAgMjAwODxici8+TmV3IFJldmlzaW9uOiAxNDU1NDxici8+PGJyLz5Nb2RpZmllZDo8YnIvPiAgIGRvYy90cnVuay9kZXNpZ24vc3luL1MwNS5wb2Q8YnIvPjxici8+TG9nOjxici8+dHlwbyBmaXhlcyBieSBkaWFrb3B0ZXIrKzxici8+PGJyLz48YnIvPk1vZGlmaWVkOiBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDUucG9kPGJyLz49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnIvPi0tLSBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDUucG9kCShvcmlnaW5hbCk8YnIvPisrKyBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDUucG9kCUZyaSBKdW4gMjAgMTk6NTc6MjAgMjAwODxici8+QEAgLTE0OTksNyArMTQ5OSw3IEBAPGJyLz4gPGJyLz4gVGhlIGxhc3QgaXMgZXF1aXZhbGVudCB0bzxici8+IDxici8+LSAgICAvICggZm9vIHwgYmFyICkgZCAoIGZvbyB8IGJhcikgLzxici8+KyAgICAvICggZm9vIHwgYmFyICkgZCAoIGZvbyB8IGJhciApIC88YnIvPiA8YnIvPiBOb3RlIHRoYXQgdGhlICZxdW90O3NlbGYmcXVvdDsgY2FsbCBvZjxici8+IDxici8+QEAgLTIwNjUsNyArMjA2NSw3IEBAPGJyLz4gICAgICAkc29tZXRoaW5nID0gJnF1b3Q7JnF1b3Q7Ozxici8+ICAgICAgL2F8YnxjfCRzb21ldGhpbmcvOzxici8+IDxici8+LUluIHBhcnRpY3VsYXIsIEMmbHQ7Jmx0OyAmbHQ7PyZndDsgJmd0OyZndDsgYWx3YXlzIG1hdGNoZXMgdGhlIG51bGwgc3RyaW5nIHN1Y2Nlc3NmdWx5LDxici8+K0luIHBhcnRpY3VsYXIsIEMmbHQ7Jmx0OyAmbHQ7PyZndDsgJmd0OyZndDsgYWx3YXlzIG1hdGNoZXMgdGhlIG51bGwgc3RyaW5nIHN1Y2Nlc3NmdWxseSw8YnIvPiBhbmQgQyZsdDsmbHQ7ICZsdDshJmd0OyAmZ3Q7Jmd0OyBhbHdheXMgZmFpbHMgdG8gbWF0Y2ggYW55dGhpbmcuPGJyLz4gPGJyLz4gPWJhY2s8YnIvPjwvcD4= 2008-06-20T19:57:28Z [svn:perl6-synopsis] r14553 - doc/trunk/design/syn (1 message) PHA+RnJvbTogcG1pY2hhdWQKCkF1dGhvcjogcG1pY2hhdWQ8YnIvPkRhdGU6IEZyaSBKdW4gMjAgMTk6NTY6NDMgMjAwODxici8+TmV3IFJldmlzaW9uOiAxNDU1Mzxici8+PGJyLz5Nb2RpZmllZDo8YnIvPiAgIGRvYy90cnVuay9kZXNpZ24vc3luL1MwMy5wb2Q8YnIvPjxici8+TG9nOjxici8+dHlwbyBmaXhlcyBieSBkaWFrb3B0ZXIrKzxici8+PGJyLz48YnIvPk1vZGlmaWVkOiBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDMucG9kPGJyLz49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnIvPi0tLSBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDMucG9kCShvcmlnaW5hbCk8YnIvPisrKyBkb2MvdHJ1bmsvZGVzaWduL3N5bi9TMDMucG9kCUZyaSBKdW4gMjAgMTk6NTY6NDMgMjAwODxici8+QEAgLTE3MSw3ICsxNzEsNyBAQDxici8+IDxici8+ICAgICB7IC4uLiB9PGJyLz4gPGJyLz4tV2hlbiBmb3VuZCB3aGVyZSBhIHN0YXRlbWVudCBpcyBleHBlY3RlZCwgZXhlY3V0ZXMgaW1tZWRpYXRlbHkuICBPdGhld2lzZTxici8+K1doZW4gZm91bmQgd2hlcmUgYSBzdGF0ZW1lbnQgaXMgZXhwZWN0ZWQsIGV4ZWN1dGVzIGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlPGJyLz4gYWx3YXlzIGRlZmVycyBldmFsdWF0aW9uIG9mIHRoZSBpbnNpZGUgc2NvcGUuPGJyLz4gPGJyLz4gPWl0ZW0gKjxici8+QEAgLTIxNyw3ICsyMTcsNyBAQDxici8+IDxici8+IFRyYW5zbGl0ZXJhdGlvbnM8YnIvPiA8YnIvPi0gICAgdHIvYS4uei9BLi5aLzs8YnIvPisgICAgdHIvYS4uei9BLi5aLzxici8+IDxici8+IE5vdGUgcmFuZ2VzIHVzZSBDJmx0Oy4uJmd0OyByYXRoZXIgdGhhbiBDJmx0Oy0mZ3Q7Ljxici8+IDxici8+PC9wPg== 2008-06-20T19:56:50Z Test Suite TASKS (1 message)

From: Adrian Kreher Hello,

I'm Adrian, the Summer of Code student who is working on the test suite hosted
in the Pugs repo. You might have seen me on IRC as Auzon.

A while back, I started a file (pugs/t/TASKS) in the repository to hold a list
of things that need to be done on the test suite. I want to make it easier
for implementers to communicate with the contributors for the test suite on
what is lacking in the test suite. This allows test writers to see what would
be the most beneficial to implementers, and also make it easier for new
contributors to join in with a task in mind.

So, if you see any tests that seem wrong, any areas that are undertested or
even untested, please add them to pugs/t/TASKS with the relevant synopsis.

Thanks,
--
Adrian Kreher

2008-06-18T21:38:27Z
Parrot 0.6.3 "Beautiful Parrot" Released! (2 messages)

From: Alberto Simões, Nuno 'smash' Carvalho Greetings,

On behalf of the Parrot team, I'm proud to announce Parrot 0.6.3
"Beautiful Parrot." Parrot (http://parrotcode.org/) is a virtual machine aimed
at running all dynamic languages.

Parrot 0.6.3 is available via CPAN (soon), or follow the download
instructions at http://parrotcode.org/source.html. For those who
would like to develop on
Parrot, or help develop Parrot itself, we recommend using Subversion on
the source code repository to get the latest and best Parrot code.

Parrot 0.6.3 News:
- Specification
+ updated pdd09_gc.pod
- Languages
+ Cardinal:
- dramatically improved parsing speed
- added support for defining and instantiating classes
- started fleshing out the builtin class hierarchy
- added support for hashes and arrays
+ Chitchat: added the start of a smalltalk compiler
+ Pheme: updated to match PGE changes
+ Pynie: return statement, other minor updates
+ Rakudo:
- added working list and hash contexts
- added 'return' statements
- added => pair constructor
- added ?? !! ternary
- added Range, range operators, Complex
- added common List, Hash methods
- refactored base classes
- added Mutable, Perl6Scalar classes
- added type-checking, is readonly/rw/copy for parameters
- added make localtest, docs/spectest-progress.csv
- fix named unaries
+ Squaak: implement return statement
+ Tcl: updated control flow exceptions to use new builtin types
- Compilers
+ All tools converted to P6object metamodel
+ PGE:
- <?foo> is now a zero-width match
- reduced backtracking to improve parsing speed
+ PCT:
- added "return" PAST.op node type for subroutine returns
- added "keyed_int" scoping to PAST::Var
- fixed calls to closures
- automatically transcode 7-bit unicode to ascii for faster processing
+ NQP: added "return" statement, ?? !! ternary operator
- Configuration
+ expanded step gen::opengl
- Implementation
+ updated function and macro names to match pdd09_gc.pod
+ removed Super PMC
+ add ".namespace []" as alternative to ".namespace"
+ "make codetest" target runs standard coding tests
- Miscellaneous
+ added P6object class for Perl 6 interfaces to objects in Parrot
+ ported OpenGL/GLU/GLUT bindings to Win32, BSD, and more Mac OS X variants
+ generate OpenGL/GLU/GLUT bindings by parsing system headers
+ new OpenGL example shapes.pir, covering basic OpenGL 1.1 / GLUT 3 APIs
+ new float4.pir structure-packing benchmark
+ reduced memory use for variables
+ improved constant string caching
+ made code g++ and gcc (with optimizations) safe
+ the usual collection of bugfixes and optimizations


Many thanks to all our contributors for making this possible, and our sponsors
for supporting this project. Our next scheduled release is 15 July 2008.

Enjoy!
./smash

2008-06-17T15:49:56Z
[svn:perl6-synopsis] r14552 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Sat Jun 14 17:06:09 2008
New Revision: 14552

Modified:
doc/trunk/design/syn/S05.pod

Log:
this sentence no verb, diakopter++


Modified: doc/trunk/design/syn/S05.pod
==============================================================================
--- doc/trunk/design/syn/S05.pod (original)
+++ doc/trunk/design/syn/S05.pod Sat Jun 14 17:06:09 2008
@@ -346,7 +346,7 @@

The primary intent of these rules is to minimize format disruption
when substitution happens across line boundaries and such. There is,
-of course, no guarantee that the result will exactly what a human would
+of course, no guarantee that the result will be exactly what a human would
do.

The C<:s> modifier is considered sufficiently important that

2008-06-14T17:06:17Z
fallback semantics of list methods (4 messages)

From: TSa , Moritz Lenz, Daniel Ruoso, Larry Wall In the test suite and on IRC there was quite some confusion about how
list builtins are specced, and how they should behave in corner cases.

One is join():
our Str multi method join ( @values: Str $separator = ' ' )
our Str multi join ( Str $separator = ' ', *@values )

It is quite clear that the perl 5-style
join 'sep', $value, $value2;
invocation remains valid, and
@list.join($sep)
is the new method form.

The confusion arises what to do with
'str'.join('other_str')
should be.

Fallback semantics in S12 suggest that since no matching multi method is
found, subs are tried - that is, the expression is interpreted as
join('str', 'other_str')
yielding 'other_str'. t/spec/S29-list/join.t disagrees, and wants the
result to be 'str'.

Daniel Ruoso argued in favour of the tested behaviour, suggesting that
perhaps the specs should be updated accordingly, mostly because
('str').join('other_str')
would be confusing otherwise.

Patrick Michaud argued in favour of the specced behaviour, and I agree.
Mostly because nobody sane will write things like
'str'.join('other_str') with a literal string as the invocant in first
place. And if it's not a literal, and you want it to behave as list, the
invocant is either something that returns a list, or a variable with the
'@' sigil. We just need to be careful that everything that should return
really does that, even if it contains a single list.

Currently both pugs and rakudo make <a b> return a list (pugs actually
an array, but that's a different problem), but <a> is a Str.
If we'd just be more consistent and always return a list, I don't see a
problem with the spec. If not, it would be rather weird to have <a
b>.join('c') return 'abc', but <a>.join('c') return 'c'.

Consider
my $x = A.new();
$x.y = <a>;
say $x.y.join('b')
The output is different for the two possible declarations of class A:
class A { has $y is rw } # -> b
class A { has @y is rw } # -> a
not pretty IMHO.

So I see the following options:
1) be more consistent with what returns a list
2) Add a method with invocant Any for each list builtin
3) drop method fallback, thus disallowing Str.join(Str) outright
4) be lisp, make everything a list *g* (not serious)

I haven't thought a lot about the third option, and what it would mean
to the language as a whole, so I have no idea if it's a viable alternative.

Any thoughts on the topic are welcome. I hope I didn't confuse too much
here ;-)

Cheers,
Moritz

--
Moritz Lenz
http://moritz.faui2k3.org/ | http://perl-6.de/

2008-06-14T04:28:06Z
[svn:perl6-synopsis] r14551 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Wed Jun 11 17:53:27 2008
New Revision: 14551

Modified:
doc/trunk/design/syn/S05.pod

Log:
added <...> et al. as suggested by ruoso++


Modified: doc/trunk/design/syn/S05.pod
==============================================================================
--- doc/trunk/design/syn/S05.pod (original)
+++ doc/trunk/design/syn/S05.pod Wed Jun 11 17:53:27 2008
@@ -16,7 +16,7 @@
Date: 24 Jun 2002
Last Modified: 11 Jun 2008
Number: 5
- Version: 80
+ Version: 81

This document summarizes Apocalypse 5, which is about the new regex
syntax. We now try to call them I<regex> rather than "regular
@@ -1410,6 +1410,15 @@

=item *

+The C<< <...> >>, C<< <???> >>, and C<< <!!!> >> special tokens
+have the same "not-defined-yet" meanings within regexes that the bare
+elipses have in ordinary code. (However, by the recursive rules above,
+C<< <!!> >> is equivalent to C<< <?> >>, which matches the null string.
+Likewise C<< <!!before x> >> is just like C<< <?before x> >>, except
+that it is ignored by the longest-token matcher.)
+
+=item *
+
A leading C<*> indicates that the following pattern allows a
partial match. It always succeeds after matching as many characters
as possible. (It is not zero-width unless 0 characters match.)

2008-06-11T17:53:38Z
[svn:perl6-synopsis] r14550 - doc/trunk/design/syn (1 message)

From: larry Author: larry
Date: Wed Jun 11 17:34:50 2008
New Revision: 14550

Modified:
doc/trunk/design/syn/S05.pod

Log:
fixed "samebase" illogic pointed out by moritz++


Modified: doc/trunk/design/syn/S05.pod
==============================================================================
--- doc/trunk/design/syn/S05.pod (original)
+++ doc/trunk/design/syn/S05.pod Wed Jun 11 17:34:50 2008
@@ -14,9 +14,9 @@
Maintainer: Patrick Michaud <pmichaud@pobox.com> and
Larry Wall <larry@wall.org>
Date: 24 Jun 2002
- Last Modified: 18 May 2008
+ Last Modified: 11 Jun 2008
Number: 5
- Version: 79
+ Version: 80

This document summarizes Apocalypse 5, which is about the new regex
syntax. We now try to call them I<regex> rather than "regular
@@ -181,7 +181,7 @@
The single-character modifiers also have longer versions:

:i :ignorecase
- :b :basechar
+ :a :ignoreaccent
:g :global

=item *
@@ -227,7 +227,7 @@

=item *

-The C<:b> (or C<:basechar>) modifier scopes exactly like C<:ignorecase>
+The C<:a> (or C<:ignoreaccent>) modifier scopes exactly like C<:ignorecase>
except that it ignores accents instead of case. It is equivalent
to taking each grapheme (in both target and pattern), converting
both to NFD (maximally decomposed) and then comparing the two base
@@ -237,7 +237,7 @@
includes all ignored characters, including any that follow the final
base character.

-The C<:bb> (or C<:samebase>) variant may be used on a substitution to change the
+The C<:aa> (or C<:sameaccent>) variant may be used on a substitution to change the
substituted string to the same accent pattern as the matched string.
Accent info is carried across on a character by character basis. If
the right string is longer than the left one, the remaining characters
@@ -968,8 +968,8 @@
unless it happens to be a C<Regex> object, in which case it is matched
as a subrule. As with scalar subrules, a tainted subrule always fails.
All string values pay attention to the current C<:ignorecase>
-and C<:basechar> settings, while C<Regex> values use their own
-C<:ignorecase> and C<:basechar> settings.
+and C<:ignoreaccent> settings, while C<Regex> values use their own
+C<:ignorecase> and C<:ignoreaccent> settings.

When you get tired of writing:

@@ -1069,7 +1069,7 @@
=back

All hash keys, and values that are strings, pay attention to the
-C<:ignorecase> and C<:basechar> settings. (Subrules maintain their
+C<:ignorecase> and C<:ignoreaccent> settings. (Subrules maintain their
own case settings.)

You may combine multiple hashes under the same longest-token

2008-06-11T17:34:58Z
[svn:perl6-synopsis] r14549 - doc/trunk/design/syn (10 messages)

From: Mark J. Reed, TSa, jerry gay, Ruud H.G. van Tol Author: larry
Date: Wed Jun 11 16:49:17 2008
New Revision: 14549

Modified:
doc/trunk/design/syn/S03.pod

Log:
Fixes suggested by Ryan++


Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod (original)
+++ doc/trunk/design/syn/S03.pod Wed Jun 11 16:49:17 2008
@@ -1057,8 +1057,11 @@

Note that these differ:

- $min ..^ $max $ min .. $max-1
- $min .. ^$max # $min .. (0..$max-1)
+ 0 ..^ 10 # 0 .. 9
+ 0 .. ^10 # 0 .. (0..9)
+
+(It's not yet clear what the second one should mean, but whether it
+succeeds or fails, it won't do what you want.)

=back

2008-06-11T16:49:28Z