[svn:perl6-synopsis] r9050 - doc/trunk/design/syn

2006-05-01 Thread autrijus
Author: autrijus
Date: Mon May  1 01:31:24 2006
New Revision: 9050

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

Log:
* S02: even more long dot fixes.

Modified: doc/trunk/design/syn/S02.pod
==
--- doc/trunk/design/syn/S02.pod(original)
+++ doc/trunk/design/syn/S02.podMon May  1 01:31:24 2006
@@ -939,8 +939,9 @@
 is the variable name, including any sigil.  The package object can
 be derived from a type name by use of the C<::> postfix operator:
 
-MyType. .::. .{'$foo'}
-MyType::<$foo>  # same thing
+MyType::<$foo>
+MyType.::.{'$foo'}  # same thing with dots
+MyType\ .::\ .{'$foo'}  # same thing with long dots
 
 (Directly subscripting the type with either square brackets or curlies
 is reserved for various generic type-theoretic operations.  In most other
@@ -1677,9 +1678,9 @@
 pairs.  To align values of option pairs, you may use the
 "long dot" postfix forms:
 
-:longkey.  .($value)
-:shortkey. .
-:fookey.   .{ $^a <=> $^b }
+:longkey\  .($value)
+:shortkey\ .
+:fookey\   .{ $^a <=> $^b }
 
 These will be interpreted as
 


[svn:perl6-synopsis] r9051 - doc/trunk/design/syn

2006-05-01 Thread autrijus
Author: autrijus
Date: Mon May  1 01:33:08 2006
New Revision: 9051

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

Log:
* S04: minor typo cleanup.
* S04: Document a consequence caused by the statement-terminating
   end-of-line block rule:

# Without the trailing comma, this becomes a code block
my $hash = {
1 => { 2 => 3, 4 => 5 },
};

  In other words, nested hash literals in other hash literals
  must _not_ be statement-ending. 

Modified: doc/trunk/design/syn/S04.pod
==
--- doc/trunk/design/syn/S04.pod(original)
+++ doc/trunk/design/syn/S04.podMon May  1 01:33:08 2006
@@ -121,7 +121,7 @@
 =head1 Statement-ending blocks
 
 A line ending with a closing brace "C<}>", followed by nothing but
-whitespace or comments, will terminates statement if an end of statement
+whitespace or comments, will terminate a statement if an end of statement
 can occur there.  That is, these two statements are equivalent:
 
 my $x = sub { 3 }
@@ -135,6 +135,13 @@
 sub { 3 }   # the statement won't terminate here 
 ];
 
+However, a nested hash block must be disambiguated by a trailing comma:
+
+# Without the trailing comma, this becomes a code block
+my $hash = {
+1 => { 2 => 3, 4 => 5 },
+};
+
 Because subroutine declarations are expressions, not statements,
 this is now invalid:
 


[svn:perl6-synopsis] r9052 - doc/trunk/design/syn

2006-05-01 Thread autrijus
Author: autrijus
Date: Mon May  1 01:35:22 2006
New Revision: 9052

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

Log:
* S12: The example
@array.=sort
  is better written as
@array .= sort
  as it's not impossible for "=sort" to be a postfix operator
  on its own.

Modified: doc/trunk/design/syn/S12.pod
==
--- doc/trunk/design/syn/S12.pod(original)
+++ doc/trunk/design/syn/S12.podMon May  1 01:35:22 2006
@@ -503,7 +503,7 @@
 
 You can call an in-place mutator method like this:
 
-@array.=sort;
+@array .= sort;
 
 If there is a C operator defined, that will be used.  Otherwise
 one will be autogenerated from the ordinary C operator, on the


Re: error building pugs: "Could not find module `Data.ByteString'"

2006-05-01 Thread Dave Whipp

Dave Whipp wrote:

Could not find module `Data.ByteString':


I updated to r10166: Audrey's update to third-party/fps/... fixed my 
problem.


Thanks.


Dave.


Re: A shorter long dot

2006-05-01 Thread Smylers
Jonathan Lang writes:

> Larry Wall wrote:
> 
> > I don't see much downside to \. as a long dot.
> 
> The only remaining problem that I see for the long dot is largely
> orthogonal to the selection of the first and last characters - namely,
> that your only choice for filler is whitespace.

Why's that a "problem"?

Folks want to be able to line stuff up, and to split statements over
multiple lines.  This is now possible.

Smylers


[perl #39043] [TODO] Dynamic PMCs should not include 'parrot/parrot.h'

2006-05-01 Thread via RT
# New Ticket Created by  Bernhard Schmalhofer 
# Please include the string:  [perl #39043]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/rt3/Ticket/Display.html?id=39043 >


In 'include/parrot/parrot.h' it quite sensibly says:

/* Only parrot core files should include this file.
   Extensions should include .
   Programs embedding parrot should include .
*/

However all dynamic PMCs in src/dynpmc and most, if not all, language 
PMCs are
also including 'parrot/parrot.h'.

So the dependencies on symbols not defined in 'extend.h' should go away.




Re: [perl #39038] [BUG] linker failure with dynpmc on win32

2006-05-01 Thread jerry gay

after 13473 (bernhard++ for trying) building parrot now fails during
src/platform.c

src\platform.c
platform.c
config\gen\platform\generic\math.c(15) : error C2375: 'Parrot_signbit'
: redefinition; different linkage
   include\parrot\platform_interface.h(16) : see declaration of
'Parrot_signbit'
NMAKE : fatal error U1077: 'D:\usr\local\perl\bin\perl.exe' : return code '0x2'
Stop.

i only had 'build and complain' shaped tuits over the weekend,  but
today i hope to find some tuits of the 'fix it' variety. still looking
for 'em.


Re: A shorter long dot

2006-05-01 Thread Dr.Ruud
"Jonathan Lang" schreef:

> When is the last time that you saw an underscore-only method name?

  sub _{print"$_\n"};

-- 
Affijn, Ruud

"Gewoon is een tijger."




[svn:perl6-synopsis] r9069 - doc/trunk/design/syn

2006-05-01 Thread autrijus
Author: autrijus
Date: Mon May  1 08:43:47 2006
New Revision: 9069

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

Log:
* S03: Correct the perl5ish "map" example to have an extra comma.
  17:44 < TimToady> audreyt: foo {...} 1,2,3 is wrong, needs a comma.

Modified: doc/trunk/design/syn/S03.pod
==
--- doc/trunk/design/syn/S03.pod(original)
+++ doc/trunk/design/syn/S03.podMon May  1 08:43:47 2006
@@ -698,8 +698,8 @@
 The new operators C<< ==> >> and C<< <== >> are akin to UNIX pipes, but
 work with functions that accept and return lists.  For example,
 
- @result = map { floor($^x / 2) }
- grep { /^ \d+ $/ }
+ @result = map { floor($^x / 2) },
+ grep { /^ \d+ $/ },
@data;
 
 Can also now be written:


[svn:perl6-synopsis] r9071 - doc/trunk/design/syn

2006-05-01 Thread autrijus
Author: autrijus
Date: Mon May  1 09:18:16 2006
New Revision: 9071

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

Log:
* S06: Add Whatever to the list of "Undefined types".

Modified: doc/trunk/design/syn/S06.pod
==
--- doc/trunk/design/syn/S06.pod(original)
+++ doc/trunk/design/syn/S06.podMon May  1 09:18:16 2006
@@ -1311,6 +1311,7 @@
 functions.  (See S02 for how failures are handled.)
 
 Undef   Undefined (can serve as a prototype object of any class)
+WhateverWildcard (like undef, but subject to do-what-I-mean via MMD)
 Failure Failure (throws an exception if not handled properly)
 
 =head2 Immutable types


[svn:perl6-synopsis] r9076 - doc/trunk/design/syn

2006-05-01 Thread autrijus
Author: autrijus
Date: Mon May  1 10:32:02 2006
New Revision: 9076

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

Log:
* S03.pod: Retire lvalue undef and replace it with lvalue Whatever:

# Perl 5
(undef, undef, $x) = (1,2,3);

# Perl 6
(*, *, $x) = (1,2,3);

Modified: doc/trunk/design/syn/S03.pod
==
--- doc/trunk/design/syn/S03.pod(original)
+++ doc/trunk/design/syn/S03.podMon May  1 10:32:02 2006
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 8 Mar 2004
-  Last Modified: 30 Apr 2006
+  Last Modified: 2 May 2006
   Number: 3
-  Version: 25
+  Version: 26
 
 =head1 Changes to existing operators
 
@@ -671,6 +671,8 @@
 @slice = @x[*;0;*];# any Int
 @slice = %x{*;'foo'};  # any keys in domain of 1st dimension
 @array[*]  # flattens, unlike @array[]
+(*, *, $x) = (1, 2, 3);# skip first two elements
+   # (same as lvalue "undef" in Perl 5)
 
 C is an undefined prototype object derived from C.  As a
 type it is abstract, and may not be instantiated as a defined object.


[perl #38931] [RFE] Double-quoted strings automatically determine string type

2006-05-01 Thread Patrick R. Michaud via RT
FWIW, I'm retracting this particular RFE (and closing the ticket).  I've
since decided it's better to have things the way they are now.

Pm


[perl #39044] Problem with :slurpy, :slurpy :named, :flat :named

2006-05-01 Thread via RT
# New Ticket Created by  Patrick R. Michaud 
# Please include the string:  [perl #39044]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/rt3/Ticket/Display.html?id=39044 >


---
osname= linux
osvers= 2.6.12
arch=   x86_64-linux-thread-multi
cc= cc 
---
Flags:
category=core
severity=medium
ack=no
---
Several have asked me to go ahead and file an RT report
for the failing test in t/op/calling.t (currently test #91)
so that people aren't left wondering why it fails.

Currently Parrot has a variety of troubles with :slurpy and 
:slurpy :named both appearing in parameter lists.  In 
particular, given a function such as

.sub foo
.param pmc array :slurpy
.param pmc hash :slurpy :named
...


The following call to foo will lose one of the values of $P0:

.sub main
$P0 = new .Hash
$P0['a'] = 11
$P0['b'] = 22
$P0['c'] = 33
foo(0, 1, $P0 :flat :named)

That is, when sub foo is executed, "hash" will appear to have only
two entries in it instead of three.  (This is test #91 in t/op/calling.t.)

Surprisingly, it seems to work properly if a named argument is explicitly
given in the argument list:

.sub main
$P0 = new .Hash
$P0['a'] = 11
$P0['b'] = 22
$P0['c'] = 33
foo(0, 1, 'XXX'=>0, $P0 :flat :named)

That is, when sub foo is executed here, "hash" correctly has 
four entries in it.  This is test #92 in t/op/calling.t (and
for the moment I'm using this approach in PGE as a workaround
for the bug).

Pm

---
Summary of my parrot 0.4.3 (r12477) configuration:
  configdate='Mon May  1 14:06:21 2006'
  Platform:
osname=linux, archname=x86_64-linux-thread-multi
jitcapable=0, jitarchname=nojit,
jitosname=linux, jitcpuarch=x86_64
execcapable=0
perl=/usr/bin/perl
  Compiler:
cc='cc', ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS 
-DDEBUGGING  -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -I 
/usr/include',
  Linker and Libraries:
ld='cc', ldflags=' -L/usr/local/lib64',
cc_ldflags='',
libs='-lm -ldl -lcrypt -lpthread -lrt -lreadline'
  Dynamic Linking:
share_ext='.so', ld_share_flags='-shared -L/usr/local/lib64 -fPIC',
load_ext='.so', ld_load_flags='-shared -L/usr/local/lib64 -fPIC'
  Types:
iv=long, intvalsize=8, intsize=4, opcode_t=long, opcode_t_size=8,
ptrsize=8, ptr_alignment=1 byteorder=12345678, 
nv=double, numvalsize=8, doublesize=8

---
Environment:
HOMELANGLANGUAGELD_LIBRARY_PATHLOGDIRPATHSHELL


[perl #39045] [BUG] "isa" opcode doesn't (yet) work with keyed classnames

2006-05-01 Thread via RT
# New Ticket Created by  Patrick R. Michaud 
# Please include the string:  [perl #39045]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/rt3/Ticket/Display.html?id=39045 >


---
osname= linux
osvers= 2.6.12
arch=   x86_64-linux-thread-multi
cc= cc 
---
Flags:
category=core
severity=medium
ack=no
---
Although namespace issues are still being worked out, I'm
entering this ticket to note that the "isa" opcode doesn't
seem to work with keyed classnames.

base = subclass 'Hash', ['Perl6'; 'PAST'; 'Node']
$P0 = new [ 'Perl6'; 'PAST'; 'Node' ]
$I0 = isa $P0, [ 'Perl6'; 'PAST'; 'Node']

results in

error:imcc:The opcode 'isa_i_p_kc' (isa<3>) was not found.

Pm

---
Summary of my parrot 0.4.3 (r12477) configuration:
  configdate='Mon May  1 14:06:21 2006'
  Platform:
osname=linux, archname=x86_64-linux-thread-multi
jitcapable=0, jitarchname=nojit,
jitosname=linux, jitcpuarch=x86_64
execcapable=0
perl=/usr/bin/perl
  Compiler:
cc='cc', ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS 
-DDEBUGGING  -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -I 
/usr/include',
  Linker and Libraries:
ld='cc', ldflags=' -L/usr/local/lib64',
cc_ldflags='',
libs='-lm -ldl -lcrypt -lpthread -lrt -lreadline'
  Dynamic Linking:
share_ext='.so', ld_share_flags='-shared -L/usr/local/lib64 -fPIC',
load_ext='.so', ld_load_flags='-shared -L/usr/local/lib64 -fPIC'
  Types:
iv=long, intvalsize=8, intsize=4, opcode_t=long, opcode_t_size=8,
ptrsize=8, ptr_alignment=1 byteorder=12345678, 
nv=double, numvalsize=8, doublesize=8

---
Environment:
HOMELANGLANGUAGELD_LIBRARY_PATHLOGDIRPATHSHELL


error messages now with file name and line number

2006-05-01 Thread Stéphane Payrard
..with same format as gcc and grep. It is used by compiler-mode in
emacs for example.


$ diff -u compilers/imcc/debug.c.old compilers/imcc/debug.c
--- compilers/imcc/debug.c.old  2006-05-01 20:44:34.0 +0200
+++ compilers/imcc/debug.c  2006-05-02 00:03:03.0 +0200
@@ -11,7 +11,8 @@
 IMCC_fatal(Interp *interp, int code, const char *fmt, ...)
 {
 va_list ap;
-
+imcc_fprintf(interp, stderr, "%s:%d ", IMCC_INFO(interp)->state->file, 
+ IMCC_INFO(interp)->state->line);
 va_start(ap, fmt);
 imcc_vfprintf(interp, stderr, fmt, ap);
 va_end(ap);
@@ -24,8 +25,10 @@
 {
 va_list ap;
 
-va_start(ap, fmt);
+imcc_fprintf(interp, stderr, "%s:%d ", IMCC_INFO(interp)->state->file, 
+ IMCC_INFO(interp)->state->line);
 fprintf(stderr, "error:imcc:");
+va_start(ap, fmt);
 imcc_vfprintf(interp, stderr, fmt, ap);
 va_end(ap);
 IMCC_print_inc(interp);
@@ -41,6 +44,8 @@
 if (IMCC_INFO(interp)->imcc_warn)
 return;
 
+imcc_fprintf(interp, stderr, "%s:%d ", IMCC_INFO(interp)->state->file, 
+ IMCC_INFO(interp)->state->line);
 va_start(ap, fmt);
 imcc_vfprintf(interp, stderr, fmt, ap);
 va_end(ap);


Re: A shorter long dot

2006-05-01 Thread Paul Johnson
On Mon, May 01, 2006 at 01:15:58PM +0100, Smylers wrote:

> Jonathan Lang writes:
> 
> > Larry Wall wrote:
> > 
> > > I don't see much downside to \. as a long dot.

> Folks want to be able to line stuff up, and to split statements over
> multiple lines.  This is now possible.

You know, I'm still wondering who these folks are.  Seriously.

Maybe you all write your code differently to me, but looking through a
load of my OO code I had trouble finding three method calls in a row to
any methods on any objects, let alone six calls to the same method name
on different objects.

If I saw code like

 $xyzzy.foo();
 $fooz\.foo();
 $foo\ .foo();
 $fa\  .foo();
 $and_a_long_one_I_still_want_to_align\
   .foo();
 $etc\ .foo();

I'd probably take that as a pretty strong clue that I should really have
written

$_.foo for @things_to_foo;

or something.

I like lining up my code as much as the next programmer, and probably a
lot more, but I just don't see the need for this syntax which seems
ugly, confusing and unnecessary.

But then again, as I said, I really don't see the problem that is being
solved.

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net


Re: [svn:perl6-synopsis] r9076 - doc/trunk/design/syn

2006-05-01 Thread james
On Mon, May 01, 2006 at 10:32:02AM -0700, [EMAIL PROTECTED] wrote:
> Log:
> * S03.pod: Retire lvalue undef and replace it with lvalue Whatever:
> 
> # Perl 5
> (undef, undef, $x) = (1,2,3);
> 
> # Perl 6
> (*, *, $x) = (1,2,3);

Is my ($foo, *, $bar) = 1..3 legal perl6?  my ($foo, undef, $bar) =
1..3; is valid perl5, but AFAIK that is completely undocumented.  (It's
quite useful from time to time -- now if only my (@rest, $almost, $last) =
function_returning_many_thingies could work...

-=- James Mastros


Parrot Bug Summary

2006-05-01 Thread Parrot Bug Summary
Parrot Bug Summary

http://rt.perl.org/rt3/NoAuth/parrot/Overview.html
Generated at Mon May 1 13:15:03 2006 GMT
---

  * Numbers
  * New Issues
  * Overview of Open Issues
  * Ticket Status By Version
  * Requestors with most open tickets

---

Numbers

Ticket Counts: 80 new + 206 open = 286
Created this week: 35
Closed this week: 5

---

New Issues

New issues that have not been responded to yet

1 - 2 weeks old
38964  .sub names can't be Unicode.
2 - 3 weeks old
3 - 4 weeks old
38887  Result of INFINITY or NAN stringification is platform dependent
4 - 5 weeks old
38823  [BUG] solaris 10 w gcc
5 - 6 weeks old
38788  make test results
6 - 7 weeks old
38764  Test results of parrot on Freebsd
7 - 8 weeks old
38691  OSX bus error in punie-clone
8 - 9 weeks old
9 - 10 weeks old
38594  [BUG] source line numbers
10 - 11 weeks old
11 - 12 weeks old
38469  [BUG] -O1 branch optimization
12 - 13 weeks old
38432  Exception thrown from constructor leads to oddness
13 - 14 weeks old
14 - 15 weeks old
15 - 16 weeks old
16 - 17 weeks old
38131  Configuration system should detect symlinks availability
17 - 18 weeks old
18 - 19 weeks old
19 - 20 weeks old
37949  String PMC get_string Method Doesn't Copy Internal String
20 - 21 weeks old
---

Overview of Open Issues

Platform   Severity   Tag  Lang
Win32 3abandoned 05005threads   0  BASIC0
sco   0fatal 0notok 0  Zcode0
riscos0High  0ok0  Amber0
qnx   0low   0Patch12  punie1
powerux   0medium0regex 0  bc   0
other 0none  0sendToCPAN0  urm  0
os390 0Normal1Todo173  tcl 27
os2   0unknown   0unknown   0  scheme   0
openbsd   1Wishlist  2utilities 0  ruby 0
next  0  notabug   0  python   0
Solaris   0   library   0  plot 0
sunos 0   install   1  ook  0
svr4  0   bounce0  m4   0
VOS   0   Bug  20  jako 0
vms   0   compiler  0  forth0
uts   0   configure 0  cola 0
unknown   0   core  0  bf   0
unix  0   dailybuild0  befunge  0
unicosmk  0   docs  0  Lisp 0
unicos0   duplicate 0
sysv  0   wontfix   0
svr5  0
netbsd0
mswin32   0
dynixptx  0
dos   0
dgux  0
dec_osf   0
darwin0
cygwin_nt 0
cygwin0
bsdos 0
All   2
freebsd   0
generic   0
gnu   0
MacOS X   0
macos 0
machten   0
mac   0
lynxos0
Linux 0
irix640
irix  0
HPUX  0
aix   0
---

Ticket Status By Version

New or OpenResolved

---

Requestors with most open tickets

Will Coleda  91
jerry gay40
Joshua Hoblitt   29
Leopold Toetsch  25
Matt Diephouse   12
Will Coleda   8
Simon Glover  6
Andy Dougherty6
Dan Sugalski  6
Chip Salzenberg   5

---

  * Total Issues
  * New Issues
  * Overview of Open Issues
  * Ticket Status By Version
  * Requestors with most open tickets

---
This page is CPU intensive to create, it will be updated only once every 5
minutes



[svn:perl6-synopsis] r9091 - doc/trunk/design/syn

2006-05-01 Thread larry
Author: larry
Date: Mon May  1 17:13:17 2006
New Revision: 9091

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

Log:
Explained why any has to be different from any .


Modified: doc/trunk/design/syn/S03.pod
==
--- doc/trunk/design/syn/S03.pod(original)
+++ doc/trunk/design/syn/S03.podMon May  1 17:13:17 2006
@@ -12,7 +12,7 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 8 Mar 2004
-  Last Modified: 2 May 2006
+  Last Modified: 1 May 2006
   Number: 3
   Version: 26
 
@@ -115,6 +115,61 @@
 @x[foo()] = bar(); # foo() and bar() both in scalar context
 (@x[foo()]) = bar();   # foo() and bar() both in list context
 
+=item * List operators are all parsed consistently.  As in Perl 5,
+to the left they look like terms, while to the right they look like
+operators that are looser than comma.  Unlike in Perl 5, the difference
+between the list operator form and the function form is consistently
+indicated via whitespace between the list operator and the first
+argument.  If there is whitespace, it is always a list operator,
+and the next token will be taken as the first term of the list.
+If there is no whitespace, the parser is biased towards taking the
+next token as an operator if at all possible.  If the next token
+can be taken as either an infix or a postfix operator, it indicates
+that the list operator has no arguments.  (Or more precisely, no
+extra arguments that aren't supplied the operator, since C<.()>
+is a postfix that supplies arguments to the preceding function.)
+
+Examples:
+
+say foo($bar+1),$baz   say(foo($bar+1), $baz);
+say foo.($bar+1),$baz  say(foo($bar+1), $baz);
+say foo ($bar+1),$baz  say(foo($bar+1, $baz));
+say foo .($bar+1),$baz say(foo($_.($bar+1), $baz));
+
+say foo[$bar+1],$baz   say((foo[$bar+1]), $baz);
+say foo.[$bar+1],$baz  say((foo[$bar+1]), $baz);
+say foo [$bar+1],$baz  say(foo([$bar+1], $baz));
+say foo .[$bar+1],$baz say(foo($_.[$bar+1], $baz));
+
+say foo{$bar+1},$baz   say((foo{$bar+1}), $baz);
+say foo.{$bar+1},$baz  say((foo{$bar+1}), $baz);
+say foo {$bar+1},$baz  say(foo({$bar+1}, $baz));
+say foo .{$bar+1},$baz say(foo($_.{$bar+1}, $baz));
+
+say foo<$bar+1>,$baz   say((foo<$bar+1>), $baz);
+say foo.<$bar+1>,$baz  say((foo<$bar+1>), $baz);
+say foo <$bar+1>,$baz  say(foo(<$bar+1>, $baz));
+say foo .<$bar+1>,$baz say(foo($_.<$bar+1>, $baz));
+
+Note that Perl 6 is making a consistent three-way distinction between
+term vs postfix vs infix, and will interpret an overloaded character
+like C<< < >> accordingly:
+
+any any('a','b','c')# term
+any (any).{'a','b','c'} # postfix
+any()   (any).{'a','b','c'} # postfix
+any() < $x (any) < $x  # infix
+
+This will seem unfamiliar and "undwimmy" to Perl 5 programmers, who
+are used to a grammar that sloppily hardwires a few postfix operators
+at the price of extensibility.  Perl 6 chooses instead to mandate a
+whitespace dependency in order to gain a completely extensible class
+of postfix operators.
+
+=item * A list operator's arguments are also terminated by a closure
+that is not followed by a comma or colon.  (And a semicolon is implied if
+the closure is the final thing on a line.)
+
 =back
 
 =head1 New operators


[svn:perl6-synopsis] r9096 - doc/trunk/design/syn

2006-05-01 Thread larry
Author: larry
Date: Mon May  1 22:36:54 2006
New Revision: 9096

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

Log:
Refined some notions about how we want to support numerics long term.


Modified: doc/trunk/design/syn/S02.pod
==
--- doc/trunk/design/syn/S02.pod(original)
+++ doc/trunk/design/syn/S02.podMon May  1 22:36:54 2006
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 10 Aug 2004
-  Last Modified: 30 Apr 2006
+  Last Modified: 1 May 2006
   Number: 2
-  Version: 35
+  Version: 36
 
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -388,24 +388,40 @@
 to arbitrary precision, as well as holding C and C values.
 
 (C may support arbitrary-precision floating-point arithmetic, but
-is not required to unless we can do so portably and efficiently.)
+is not required to unless we can do so portably and efficiently.  Num
+must support the largest native floating point format that runs at full speed.)
 
 C supports arbitrary precision rational arithmetic.  However,
 dividing two C objects produces fractionals as C objects by
 default, not C objects.  You can override this behavior with
 a pragma.
 
-Lower-case types like C and C imply the native machine
-representation for integers and floating-point numbers, respectively, and
-do not promote to arbitrary precision.  Untyped numeric scalars use C
-and C semantics rather than C and C.
+Lower-case types like C and C imply the native
+machine representation for integers and floating-point numbers,
+respectively, and do not promote to arbitrary precision, though
+larger representations are always allowed for temporary values.
+Unless qualified with a number of bits, C and C types default
+to the largest native types that run at full speed.  Untyped numeric
+scalars use C and C semantics rather than C and C.
+
 
 =item *
 
 Perl 6 should by default make standard IEEE floating point concepts
-visible, such as C (infinity) and C (not a number).
-It should also be at least pragmatically possible to throw exceptions
-on overflow.
+visible, such as C (infinity) and C (not a number).  Within a
+lexical scope, pragmas may specify the nature of temporary values,
+and how floating point is to behave under various circumstances.
+All IEEE modes must be lexically available via pragma except in cases
+where that would entail heroic efforts to bypass a braindead platform.
+
+The default floating-point modes do not throw exceptions but rather
+propagate Inf and NaN.  The boxed object types may carry more detailed
+information on where overflow or underflow occurred.  Numerics in Perl
+are not designed to give the identical answer everywhere.  They are
+designed to give the typical programmer the tools to achieve a good
+enough answer most of the time.  (Really good programmers may occasionally
+do even better.)  Mostly this just involves using enough bits that the
+stupidities of the algorithm don't matter much.
 
 =item *