[svn:perl6-synopsis] r9050 - doc/trunk/design/syn
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
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
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'"
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
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'
# 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
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
"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
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
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
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
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
# 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
# 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
..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
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
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
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
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
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 *