This week on the Perl 6 mailing lists
“With the little sense of smell I have left, this smells like INTERCAL’s ‘COME FROM’ statement to me…”
– Larry Wall, who has a cold, in ’supertyping’
In this thread, TSa brought up the concept of supertyping again. The
Square <: Rectangle was included, along with others. TSa’s
question involved an example where the object’s type was changed while
its identity was preserved. Additionally, TSa asked if supertyping will
exist in Perl 6, and if so, how would ’superdoes’ and ’superis’ concepts
Jonathan Lang attempted to rewrite the question for a larger audience. He explained that the suggestion was to go from specific to general, rather than the other way around.
Jonathan then noted that there are four approaches to code reuse,
three which add functionality, and one which restricts it. This led
him to see supertyping in terms of exemptions for the fourth case.
Luke Palmer responded with an equation to express the relationship,
and his answers to the questions of whether it should be illegal
to add a required method to A if B does not implement it, given
role A superdoes B, and if a required method for A should
automatically become a required method for B.
There was some discussion on how ’superdoes’ would be written, with ‘done_by’, ‘bequeath’, and ‘by’ being proposed. Ruud H.G. van Tol offered more suggestions than a thesaurus.
Larry Wall first wanted to see use cases which go beyond the number examples in order to see the value of the proposal to those who aren’t interested in type theory. Luke Palmer, on the other hand, expressed his interest in continuing to consider the idea until it is solid enough that he would be comfortable with it. Larry added his thoughts concerning namespace issues. There was a great deal more discussion formulating the specifics of the proposal.
Given a gather block which spawns multiple threads, Joe Gottman wanted to know if it is guaranteed that no object returned is lost, given that the relative order of items returned is indeterminate.
This week, Larry Wall responded that gather/take is defined over a dynamic scope, and each thread is a different dynamic scope, so by default there would be no results from other threads. He also entertained the converse, that gather/take is a normal way to set up inter-thread queuing. The short answer seemed to be that this has not yet been decided.
This thread was started by Bob Roger’s proposal for dynamic binding. To date, it has included an extended discussion between Bob and Allison Randal, plus a request from Leopold Toetsch.
Allison began this week by explaining her understanding of the terms dynamic scoping, assignment and binding. Her view of the proposal is that it offers a textbook definition of dynamic scoping. The discussion has included dynamic binding, dynamic scoping, and temporization, however. With the terms defined, she went on to propose that Bob create a new proposal for implementing dynamic scope which does not contain any references to temporization. Bob agreed to do this, but asked for a few clarifications first.
chromatic responded to ticket [perl #40958] with a second patch, which improves upon his earlier attempt. However, he noted that it seems to work poorly with Data::Dumper and that his solution, while non-invasive, was not ideal. He described his preferred fix.
Last week, in ticket [perl #41055], James Keenan registered a bug
perl Configure.pl, which seemed to be related to having
a 3-level version number.
This week, Lee Duhem commented that it would probably be enough to get the major OS version.
Ticket [perl #41064] was created by James Keenan to report another failure to make Parrot on Darwin. He expressed frustration that he is still seeing the same problem which he encountered at the Chicago Hackathon and described the measures he has taken to resolve it.
Will Coleda found a possible file ownership problem, and suggested trying a new checkout. After determining that this was not the cause, Will asked several questions in an attempt to pinpoint the cause. Several further posts were made by both James and Will as they tried to determine the source of the problem. Eventually Will concluded that the most likely culprit was James using another compiler, rather than the Apple version of gcc/g++.
Will Coleda showed how the current
and asked if it was desirable for them to work in this way. He was
working on the ‘Range’ object and encountered this problem.
Bob Rogers thought the proper fix would be to build Coroutine on Continuation instead of Sub. He also suggested storing the coroutine state explicitly in the object, and emulating yielding the method.
Allison Randal responded that the current functionality is desired for class methods, although it makes no sense for instance methods. She advised making yield object-specific within methods.
François Perrad showed some example code where an error of ‘no exception handler’ was seen when a .HLL directive was added before a simple subroutine. He wondered if that was a feature or a bug.
Allison Randal asked how to best pass-through string types from a compiler to Parrot without doing string processing. Patrick R. Michaud replied that it is expected that it will be rare for a HLL string literal format to exactly match a string literal in PIR. Consequently, it expects that the HLL will have decoded the strong constant according to the HLL rules, and PAST-pm will re-encode the string to work in Parrot. He offered to modify PAST-pm to provide a “send literal” option.
Allison thought that
was a good idea, and appreciated that the current system makes no assumptions
about what constitutes a string. Later Patrick realized that the
functionality already exists, if the
ctype isn’t set. This is subject
to change, however, so he included more specific instructions for performing
Allison Randal cited an example of printing a simple statement, ‘2′, which would actually print ‘21′ because the main routine is returning the value of the last statement (true), which is correct for Perl but not all languages. Also, the HLLCompiler is printing out this return value, and she wanted to know why that was happening. Patrick R. Michaud reported that this has since been fixed.
Greg Bacon opened ticket [perl #41082] to report a failure with building r16097 on Cygwin. He supplied a patch. After Jerry Gay closed the ticket, he asked if it was a known issue, and what the solution was.
Will Coleda created a page to prepare for bug day. December 16th was bug day.
Ovid reported that Pugs r15881 gave some errors with his new GHC 6.6
if he ran a test without
-lblib6/lib. He wondered why it would generate
a syntax error if he left out that portion of the line. Gaal Yahas suggested
that it was due to an old version of Test.pm from the earlier installation.
Ovid had a quick question on how to do introspection in Pugs. He also
wanted to know how to flatten nested lists in Perl6. Jerry Gay responded
that introspection is mostly unimplemented. He also pointed Ovid to S02
for the answer to his other question. Gaal Yahas suggested that
the Official Perl 6 Documentation was the
best place to look for updated synopses. He proposed
gather to flatten
a list, but noted that it was not yet implemented. Larry Wall replied
that that would only flatten a recursive structure with help, and noted
that Pugs implements the block form of
Ovid showed some code he had written to compress a list. He showed that once he had added some return statements inside an anonymous subroutine, he received an error message about using a control structure outside a routine. Ovid wondered if he had made a mistake or if there was a bug.
Larry Wall replied that it was expected to work that way. He quoted a section of S06, and also referenced S04. He advised changing the pointy block in to an official sub. Gaal Yahas also gave similar advice.
Nicholas Clark announced a placeholder named BIND for 6-on-5 aliasing, which should replace the need for the Perl 5 internal type PVBM as of r29544. He included a list of features he thought were needed for 6-on-5, and asked for other 4-letter (or shorter) words which were better than BIND.
David Nicol noted that increasing internal types to 32 instead of keeping them at 16 would allow the top ones to accelerate tied and overloaded types. Nicholas replied that there were too many switch statements in the core, and he would prefer switching to vtables.
David Landgren thought BIND was an alias, which was like a nickname, and therefore proposed NICK.
This summary was prepared using Mail::Summary::Tools, available on CPAN.
If you appreciate Perl, consider contributing to the Perl Foundation to help support the development of Perl.
Thank you to everyone who has pointed out mistakes and offered suggestions for improving this series. Comments on this summary can be sent to Ann Barcomb, email@example.com.
This summary can be found in the following places: