r26976 - docs/Perl6/Spec

2009-05-31 Thread pugs-commits
Author: lwall
Date: 2009-05-31 08:09:18 +0200 (Sun, 31 May 2009)
New Revision: 26976

Modified:
   docs/Perl6/Spec/S11-modules.pod
Log:
[S11] introduce declarators need and defines, components of use


Modified: docs/Perl6/Spec/S11-modules.pod
===
--- docs/Perl6/Spec/S11-modules.pod 2009-05-31 05:17:56 UTC (rev 26975)
+++ docs/Perl6/Spec/S11-modules.pod 2009-05-31 06:09:18 UTC (rev 26976)
@@ -12,8 +12,8 @@
 
   Maintainer: Larry Wall la...@wall.org
   Date: 27 Oct 2004
-  Last Modified: 26 Mar 2009
-  Version: 27
+  Last Modified: 30 Mar 2009
+  Version: 28
 
 =head1 Overview
 
@@ -154,6 +154,52 @@
 tags as arguments to Cis export.  (Of course, mixing incompatible scoping
 in different scopes is likely to lead to confusion.)
 
+The Cuse declaration is actually a composite of two other declarations,
+Cneed and Cdefines.  Saying
+
+use Sense common @horse;
+
+breaks down into:
+
+need Sense;
+Sense defines common @horse;
+
+=head2 Loading without importing
+Xneed
+
+The Cneed declarator takes a list of modules and loads them (at
+compile time) without importing any symbols.  It's good for loading
+class modules that have nothing to export (or nothing that you want
+to import):
+
+need ACME::Rocket;
+my $r = ACME::ROCKET.new;
+
+This declaration is equivalent to Perl 5's:
+
+use ACME::Rocket ();
+
+=head2 Importing without loading
+Xdefines
+
+The importation into your lexical scope may also be a separate declaration
+from loading.  This is primarily useful for modules declared inline, which
+do not automatically get imported into their surrounding scope:
+
+my module Factorial {
+multi fact (Int $n) is export { [*] 1..$n }
+}
+...
+Factorial defines 'fact';   # imports the multi
+
+Despite having the form of an infix operator, this form functions as
+a compile-time declarator, so that these notations can be combined:
+
+role Silly {
+enum Ness is export Dilly String Putty;
+} defines Ness;
+
+
 =head1 Runtime Importation
 
 Importing via Crequire also installs names into the current lexical scope by
@@ -188,16 +234,13 @@
 You may also import symbols from the various pseudo-packages listed in S02.
 They behave as if all their symbols are in the C:ALL export list:
 
-use CONTEXT $IN $OUT $ERR;
-require CALLER $x $y;
+CONTEXT defines $IN $OUT $ERR;
+CALLER defines $x $y;
 
 # Same as:
 # my ($IN, $OUT, $ERR) ::= ($*IN, $*OUT, $*ERR)
 # my ($x, $y) := ($CALLER::x, $CALLER::y)
 
-As pseudo-packages are always already preloaded, Cuse and Crequire will
-never attempt to load, for example, CCALLER.pm from an external source.
-
 =head1 Versioning
 
 When at the top of a file you say something like



Re: r26976 - docs/Perl6/Spec

2009-05-31 Thread John M. Dlugosz



 =head1 Runtime Importation
 
 Importing via Crequire also installs names into the current lexical scope by

@@ -188,16 +234,13 @@
 You may also import symbols from the various pseudo-packages listed in S02.
 They behave as if all their symbols are in the C:ALL export list:
 
-use CONTEXT $IN $OUT $ERR;

-require CALLER $x $y;
+CONTEXT defines $IN $OUT $ERR;
+CALLER defines $x $y;
 
  




Strange... you changed the examples to not be called require, but left 
the intro as Importing via require... ?


--John