Permalink
Browse files

Lots more stuff in S32. Documented Callable objects, and extended Con…

…tainers a fair bit.

Added little bits elsewhere in S32.  


git-svn-id: http://svn.pugscode.org/pugs@25583 c213334d-75ef-0310-aa23-eaa082d1ae64
  • Loading branch information...
1 parent 69b8757 commit 726d70f0387f61dca4d87b9eb7a3c8a42991bee8 wayland committed Feb 26, 2009
@@ -0,0 +1,79 @@
+=encoding utf8
+
+=head1 Title
+
+DRAFT: Synopsis 32: Setting Library - Executeable
+
+=head1 Version
+
+ Author: Tim Nelson <wayland@wayland.id.au>
+ Maintainer: Larry Wall <larry@wall.org>
+ Contributions: Tim Nelson <wayland@wayland.id.au>
+ Date: 26 Feb 2009
+ Last Modified: 26 Feb 2009
+ Version: 1
+
+The document is a draft.
+
+If you read the HTML version, it is generated from the pod in the pugs
+repository under /docs/Perl6/Spec/S32-setting-library/Exception.pod so edit it there in
+the SVN repository if you would like to make changes.
+
+This document documents Code, Block, Signature, Capture, Routine, Sub, Method, Submethod,
+and Macro.
+
+=head1 Roles
+
+=head2 Callable
+
+role Callable {...}
+
+The C<Callable> role implies the ability
+to support C<< postcircumfix:<( )> >>.
+
+=head2 Code
+
+# Base class for all executable objects
+role Code {...}
+
+=head2 Block
+
+# Executable objects that have lexical scopes
+role Block does Code does Callable {...}
+
+=head2 Signature
+
+# Function parameters (left-hand side of a binding)
+role Signature {...}
+
+=head2 Capture
+
+# Function call arguments (right-hand side of a binding)
+role Capture does Positional does Associative {...}
+
+=head1 Classes
+
+=head2 Routine
+
+class Routine does Block {...}
+
+=head2 Sub
+
+class Sub isa Routine {...}
+
+=head2 Method
+
+class Method isa Routine {...}
+
+=head2 Submethod
+
+class Submethod isa Routine {...} # XXX or should this be isa Sub
+
+=head2 Macro
+
+class Macro isa Routine {...}
+
+=head1 Additions
+
+Please post errors and feedback to perl6-language. If you are making
+a general laundry list, please separate messages by topic.
@@ -26,12 +26,22 @@ the SVN repository if you would like to make changes.
=head1 Function Roles
-This documents List, Seq, Range, Set, Bag, Junction.
+=head2 Positional
-XXX So where are Seq, Range, Set, Bag?
+role Positional {...}
+
+The C<Positional> role implies the ability to support C<< postcircumfix:<[ ]> >>.
+
+=head2 Associative
+
+role Associative {...}
+
+The C<Associative> role implies the ability to support C<< postcircumfix:<{ }> >>.
=head2 Container
+role Container {...}
+
=over
=item cat
@@ -102,6 +112,8 @@ In C<@@> context a List of Array is returned instead of flat list.
All these methods are defined in the C<Array> role/class.
+role Array does Positional {...}
+
=over
=item shape
@@ -252,6 +264,8 @@ been iterated.
The following are defined in the C<List> role/class:
+role List does Positional {...}
+
=over
=item cat
@@ -549,6 +563,8 @@ the values in the list matches.
The following are defined in the C<Hash> role.
+role Hash does Associative {...}
+
=over 4
=item :delete
@@ -638,6 +654,58 @@ the keys in the hash matches.
=back
+=head2 Tieable
+
+role Tieable {...}
+
+=head1 Classes
+
+This documents Buf, List, Seq, Range, Set, Bag, Junction, Array, Hash, KeyHash, KeySet,
+KeyBag, Pair, and Mapping.
+
+XXX So where are they? Especially Set, Bag, KeyHash, KeySet, KeyBag, Pair,
+and Mapping.
+
+=head2 Array
+
+class Array does Array {...}
+
+=head2 Seq
+
+class Seq does Positional {...}
+
+=head2 Range
+
+class Range does Positional {...}
+
+=head2 Buf
+
+class Buf does Positional {...}
+
+=head2 Hash
+
+class Hash does Hash {...}
+
+=head2
+
+class Pair does Associative {...}
+
+=head2
+
+class Mapping does Associative {...}
+
+=head2
+
+class Set does Associative {...}
+
+=head2
+
+class Bag does Associative {...}
+
+=head2
+
+class KeyHash does Associative {...}
+
=head2 Junction
All method calls on Junctions autohread if there's no such method in the
@@ -22,7 +22,7 @@ the SVN repository if you would like to make changes.
=head1 Roles
-role Exception {
+role Exception does Positional {
# XXX How do we tell the difference between a warning and a fatal error?
}
@@ -212,6 +212,8 @@ This has no effect on input buffering.
This role represents objects that depend on some external resource,
which means that data might not be available at request.
+role IO::Streamable does IO {...}
+
=over
=item new()
@@ -3,7 +3,7 @@
=head1 Title
-DRAFT: Synopsis 32: Setting Library - Miscellaneous Scalars
+DRAFT: Synopsis 32: Setting Library - Scalar
=head1 Version

0 comments on commit 726d70f

Please sign in to comment.