This week on the Perl 6 mailing lists
"I once saw an overfilled waterbed that was almost as tall as I am. I would have called it PHP, but it didn't explode and throw cold water all over the house."
-- chromatic
Language
Last week,
Mark Stosberg wanted Perl 6 to retain the Perl 5 responses to ref
or justify
the change in the documentation. Larry Wall explained that ref
will not
exist in Perl 6; instead, it will be something like .what
, which will return
the type itself, rather than a string.
The thread then moved on to subclassing, after Luke Palmer suggested that
Array
would be a subtype of Array::Const
, after Larry had stated the
reverse. This led to a lengthy discussion on the subject.
This week, Richard Hainsworth tried to analyze situations involving classes and roles using sets and subsets. He started a new thread for the topic, Classes / roles as sets / subsets.
In the previous week's summary, it was reported that
Michael Snoyman asked whether or not arguments of the same name but a different
sigil, e.g. sub foo ( $foo, @foo )
will clash. Luke Palmer thought it was
going to be a compile time error, due the to the arguments do not have the
sigil as part of their long name. Mark J. Reed wondered whether or not that is
consistent with the rest of Perl 6. Audrey Tang then explained the syntactic
difference between pairs and named arguments with regard to barewords and
quoted strings.
On August 27th, Michael repeated a friend's suggestion of making the sigil on the name optional for disambiguation. Mark Reed also made a proposal, which included having the sigil be optional in some cases.
Implicit current-index variable, scoped inside for-loops
Carl Mäsak reported a conversation from #perl6. There was a suggestion for a special variable which would carry the loop index. Ruud H.G. van Tol thought that if the block had a label you could have multiple indices attached to the name. Mark A. Biggar noted that it should also work for grep and map. There were some further discussions of syntax. Jonathan Scott Duff thought it would be too much sugar.
Classes / roles as sets / subsets
Continuing from his earlier message in thread clarifying the spec for 'ref', Richard Hainsworth continued his quest to completely understand classes in Perl 6. Daniel Hulme made a suggestion on the diagrams.
In Fwd: Classes / roles as sets / subsets, Jonathan Lang responded to Richard's questions and tried to answer them. chromatic brought up the question of the relationship between OO and inheritance.
return Types: what are the enforcement details?
Mark Stosberg wanted to write tests for 'return types' but wanted
documentation on what cases (of a different type returned)
should give errors. He also wanted to know if they are declarations
or contracts. Yuval Kogman replied that of
is the contractual
form, while returns
is a constraint which is more like a cast.
He also took a guess at what results were appropriate.
named arguments: What's the signature?
Mark Stosberg felt that information on the signature to use to declare an arbitrary number of named arguments is missing from S06. Trey Harris thought that the description of slurpy parameters already covered the subject. Stuart Cook suggested reading 'List parameters', which he thought should be cross-referenced under 'Named parameters'.
A suggestion for a new closure trait.
Joe Gottman suggested a block closure trait RESUME
, which would be
called at the beginning of each loop iteration other than the first.
Jonathan Lang asked if the relationship between RESUME
and FIRST
would be the same as NEXT
to LAST
.
could 'given' blocks have a return value?
Mark Stosberg wanted to use given
to populate with whatever value was
returned from when {}
or default {}
. He noted that Pugs allows this
when you wrap a block in an anonymous sub, but suggested that the syntax
could be cleaner.
Jonathan Lang thought that the last expression evaluated within a closure
is returned by the closure, and that given
is just another closure.
Agent Zhang reported that S04 states given {}
cannot be used directly
as an expression, but offered alternate syntax. It was concluded that
do given
is probably the best way to do this, and it should be documented.
Questions about statement modifiers
Agent Zhang wanted more information about statement modifiers than appears in S04 and included some code snippets, asking if they were valid Perl 6. Larry Wall clarified, and agreed to add the information to S04.
derived class generators and introspection
Darren Duncan described his thoughts on the subject of implementing a relational database in Perl 6. Nigel Hamilton had some questions on disk access and data storage.
Naming the method form of s///
Mark J. Reed noted that according to S05, the string method equivalent of
s///
is subst
. He felt it might be easily confused with substr
and suggested replace
.
A long discussion on how the method would actually work followed.
Andrew Suffield asked how an uncaught exception should react in certain situations. He was unable to find anything in the synopses on the subject.
Paul Seamons wondered if there was a reason why Perl 6 would not allow nested statement modifiers. Trey Harris reported that it was rejected by Larry in 2002 and gave a link. Jerry Gay thought a sentence on the subject should be added to S04. Trey noted that the synopses only address changes from Perl 5, and Perl 5 only allows one statement modifier.
Paul noted that the object syntax and the Perl 6 grammar have changed since 2002 and wondered if the reasoning was still the same. Randal Schwartz thought that Larry's reasoning was that he had seen this feature abused in other languages. Paul agreed that there are few instances where it would be useful but still wanted the opportunity to abuse it.
Parrot Porters
PMC Methods, Inheritance, and User-visible Classes
Matt Diephouse plans to work on AbstractPMCArray
PMC class
which can provide some default array vtable functions other PMCs
can inherit. He was not certain how to best handle sort methods,
which could potentially end up being visible to the user. He asked
for opinions. Joshua Juran suggested requiring array classes to
implement swap()
and implementing sort algorithms in terms of that.
Matt felt that this would not handle the underlying problem of methods
not available in a given language becoming available to users.
Watson Ladd wondered if it was bad to add functionality to a language, and chromatic responded. This led to a discussion on what exactly is wrong with PHP.
Will Coleda posted the URL of the 29 August #ParrotSketch log.
[perl #40253] [PATCH] always cast printf("%p") to (void *)
In [perl #40253], Will Coleda supplied a patch to change printfs arguments to avoid compiler warnings. However, the patch caused some test failures. Joshua Hoblitt wanted to know what compiler was generating the warnings. It was gcc 4.0.1.
Matt Diephouse put out a call for comments on what people do not like about writing PMCs. He started the list with two complaints. chromatic added three.
Mark J. Reed reported that compilation fails on OS X 10.3
with gcc 3.3 because -bundle
is misinterpreted. He supplied
a patch to change the order of arguments which fixes the problem.
Alberto Simões tried to create an RT ticket but it was not added, so he reported the problem to the newsgroup. He finds it problematic that Parrot stops with the first error it encounters and doesn't report any other errors which may exist. He offered a patch and gave people a few days to object. Jerry Gay suggested applying it, and reported the RT problem.
Will Coleda posted his attempt at implementing a JSON parser in PGE. He later found the bug that was causing him problems.
Users
multi subs with identical signatures: should be a warning ?
Mark Stosberg wanted to know where he should read to learn how the dispatching to the correct multi sub is resolved. Markus Laire suggested looking at S12 and possibly S06.
re: Announcing the Perl 6 and Parrot wiki workspaces
Conrad Schneiker announced that he had added some information to the wiki. He felt that the interface was easy to use, and wondered what other people's experiences were. There was some discussion on why the connection was slow, and the reason seemed to be that it runs on Andy Lester's home machine. Andy tried to adjust his connection, and Juerd offered to host it on feather.
Michael Snoyman wondered how a to create a makefile and run tests for
a module which wouldn't exist in the Pugs source tree.
Gaal Yahas suggested not worrying about the makefile unless the module
is intended for distribution. He suggested that Test.pm
should be
used for testing, and that the Pugs distribution has good examples of
functional tests.
Jeff Stampes wondered how he could interest his coworkers in Perl 6 topics, given some resistance to the syntax. Fagyal Csongor replied that the syntax is indeed full, because Perl 6--like Perl 5--tries to handle many different things. However, people need only learn a relevant subset. Amir E. Aharoni offered a link to samples of Perl 5 and Perl 6 code, where the latter was much cleaner.
Jonathan Scott Duff agreed with Fagyal, noting that the default syntax is clean. He suggested the fear may come from the possibility of changing the rules. A. Pagaltzis disagreed that the coworker's assertion that Perl 6 resembles Lisp and Forth. Steffen Schwigon suggested comparing Perl 6 to Perl 5. Several other people also contributed to the thread.
Jeff Stampes ran in to difficulties getting Pugs running on Red Hat Enterprise 4. Steffen Schwigon wondered if Jeff had tried one of the binaries. Later Jeff reported that he had it working.
Acknowlegements
This summary was prepared using Mail::Summary::Tools, now available on CPAN. A big thank-you to Yuval Kogman.
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, kudra@domaintje.com.
Distribution
This summary can be found in the following places:
See Also