Here's my comments on Carl Masak's S29 list. Note that some of the things that say that they're "now in" something still need a lot of work.

#  Range objects have .from, .to, .min, .max and .minmax methods

Now in S32/Containers.pod

# .contains on Hash and Array

        Where's this from?

# Code has a .sig

Seems (from what I can tell) to be synonymous with .signature, so I standardised on .signature.

# .ACCEPTS and .REJECTS on most everything -- provided by the Pattern role. Likely a mistake to put one under each section, though. Perhaps put one under Object and put a reference to S03.

        What does Pattern?  Should we have Object does Pattern?

# The cat contextualizer.

There's a .cat() method on Container in Containers.pod. Is this what you want?

# Object has .print and .say.

Ok, this makes things difficult. The algorithm of these functions is obviously something like:
1.      Object -> Str
2.      Output Str on handle

Something that makes this interesting is, what happens when you call IO.print? At the moment, S16 says that this will print a string on the IO object. So to print the IO object itself, you would have to do the algorithm above manually.

The obvious solution is to rename the function on the IO object to something like "doprint", and have Object.print, Object.say, and Object.printf all call on IO.doprint.

Where this starts to get difficult is that the IO object currently has input/output record/field separators specced on it. If the new algorithm converts an array to a string, it's obviously going to have to call on these.

My question is, would we be better off having the string conversion routine for arrays worry about the input/output record/field separators, rather than the IO object? The downside I can see is that you couldn't have separate separators for different IO objects; you'd have to code specially if you wanted that functionality. Is this too much of a downside, or is it a good way to go?

# Block types have .next, .last, .redo and .leave on them. These are also functions, and need to be specced as such.
# Block also has a .labels method.

        Now in S32/Callable.pod

# fail and .handled (the former is in S29, but has no signature/summary).

Now in S32/Exceptions.pod. But note the role/class Failure double declaration. This is not allowed by the spec, but according to how I read the spec for Failure, that's how it has to be. Obviously I need someone to explain how Failure should *really* be implemented :).

# .match, .subst and .trans from S05.

        Now in S32/Str.pod.  But I wasn't sure what subst() returns.

# Match objects: .from, .to, .chars, .orig and .text.
# Match state objects: .pos.

        Now added to S32/Regex.pod

        The rest I'll leave for another time.


---------------------------------------------------------------------
| Name: Tim Nelson                 | Because the Creator is,        |
| E-mail: wayl...@wayland.id.au    | I am                           |
---------------------------------------------------------------------

----BEGIN GEEK CODE BLOCK----
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI++++ D G+ e++>++++ h! y-
-----END GEEK CODE BLOCK-----

Reply via email to