Perl 6 summary for Aug 27 - Sep 2, 2006

kudra on 2006-09-03T16:15:00

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

clarifying the spec for 'ref'

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.

Same-named arguments

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.

Uncaught exceptions

Andrew Suffield asked how an uncaught exception should react in certain situations. He was unable to find anything in the synopses on the subject.

Nested statement modifiers.

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.

#ParrotSketch Meeting 29AUG06

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.

Why does writing PMCs suck?

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.

Proposed patch

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.

Error Recovery in Parrot

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.

PGE bug?

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.

Writing modules

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.

Stubborn coworkers

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.

Help getting pugs working?

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