This Fortnight in Perl 6, December 1 - 6 2004


Last week I asked for help identifying the source of a quotation. One friendly soul suggested Alan J. Perlis, but could not find an actual attribution. It did lead me to find a very applicable (and in my mind funny) quote from Perlis, which I will now inflict upon you all, before your regularly scheduled summary:

When someone says “I want a programming language in which I need only say what I wish done,” give him a lollipop. – Alan J. Perlis

Perl 6 Language


Jim Cromie wondered if there could be a qq:i which sometimes interpolates and sometimes doesn’t depending on whether the variable had been previously defined. There was some discussion which led to the conclusion that this was just asking for strange bugs.

Getters and Setters

John Siracusa wanted to know if Perl 6 would allow one to expose a member variable to the outside world, but then later intercept assignments to it without actually having to switch to using getters and setters in all of the code that uses the variable. The answer: yes, yes you can.

<< foo >>

Richard Proctor asked if he could do <<list of words>>. Juerd pointed out that someone had already asked this. Which brings us to the fine point, ask not Larry for he will tell you both yes and no. Although in this case I think he said “probably”…

Flipflop Operator

Juerd wondered about the fate of the flipflop. Larry explained that while it had lost the election it was still going to work hard for you in the Senate. Err, that’s not quite right, he said that “It’s leaving syntactically but not semantically.”, but he hasn’t specified the new syntax…

Temp $var

Alexey Trofimenko wanted to know whether temp would preserve or destroy its old value. Larry is leaning toward the Perl 5 semantics of destroying, I think.

State vs. My

Alexey Trofimenko wondered how much advice about optimizing Ruby also applied to Perl. Unfortunately, he also misunderstood the state specifier. The topic then quickly veered into what exactly state does.

Specifying a Hash’s Key Type

Abhijit Mahabal wanted to know if he could specify a hash’s key type. The answer is yes, but the exact syntax seems to be worth a discussion. Luke Palmer, in his Mathematician’s rage, attempted to shoot down any usage of Domain and Range, as they really should be Domain and Codomain.

Wikipedia: range Range (Mathematics)

Container Methods

Ashley Winters wants to have syntax for calling a method on the container object rather than the containee. Luke Palmer agreed that this was problematic. Larry appears to be in no hurry to add more operators for this one, yet.

Slight Discrepancy Between Synopses

St├ęphane Payrard pointed out a small issue in some Synopses. Larry replied “oops”.

Arrays, Lists, Iterators, Functions, Co-routines, Syntax

Many people suggested many things about the best thing to replace the now missing <> op. I think Larry is leaning toward adding an undare = op, which would do cool things. I don’t thing anything is final yet.

Iterators as Functions

Unary = Talk


Many folk voiced their dislike of shift and unshift. I must agree with them, but they also suggested a great many alternatives, including pull/put, get/unget, and even getting rid of push/pop. I must say that I really dislike that last idea. Fortunately I am not alone. Currently we are waiting for inspiration to strike.


Someone noticed that for might override one’s topic at undesired times. Larry ruminated about ways to solve this.

Required Whitespace

Rod Adams does not like inconsistent whitespace rules. Larry explained why the existing rules really were consistent.

Perl 6 Compilers

The lack of traffic on p6c has given me another space to abuse. You should listen to “Soul Coughing.” If you would like to join in the fun of abusing p6c, you should submit tests. Nothing is more abusive then stress testing. ;-)


Tuning and Monitoring

Matt S asked how much support Parrot has for tuning and monitoring. This week I exercise the awesome powers of the summarizer and invoke the mighty Warnock’s Dilemma.

IMCC Globals

Leo removed some IMCC globals. Nice work.

Ensure Directories Exist First

Andy Dougherty fixed a problem with writing a file in a non-existent directory. Leo applied the patch.

Namespace-sub Invocation

Last week Luke Palmer wanted to know about calling subs in namespaces. I posted Leo’s answer, but Dan does not like it. It should be a two-step process: first fetch, then invoke.

What Is an opcode?

Thomas Seiler attempted to clear up some perceived confusion about what exactly an “opcode” is. No responses…

Lexicals, Continuations, and Register Allocations

Dan voiced a final word in this long-lived and lively thread, which kicked off several children. Return Continuations (even once-promoted) restore their registers.

Dan’s Ruling

The Long and Lively Thread

Keyword Arguments

Sam Ruby wondered how he ought to handle keyword arguments to functions. Dan admitted that this is complex, and outlined the cheat he has been contemplating. No one has either commented on or implemented it yet.

What Is and Isn’t Up for Grabs

Dan attempted to lay out clear rules as to what things he would entertain until Parrot was functionally complete. Let’s hope it sticks.


Bernhard Schmalhofer provided a patch to fix some of the :-(. Leo applied it.

t/dynclass/pybuiltin.t Fails

Will added a BUG to RT for this.

Benchmark Tests

Justin DeVuyst submitted a patch, which fell through the cracks, to make the benchmarks also be tests. Fortunately Matt Diephouse rescued it from the cracks and Leo applied it.

Too Many opcodes

Leo voiced his opinion that there were too many opcodes and suggested a scheme for cutting down on them. Dan corrected him that there were not too many. Despite this surface disagreement, however, Dan addressed the spirit of Leo’s complaint. Thus, they can both be happy.

C89 Issues

There was a little confusion about whether variable declarations could follow code in C89. The answer is not.

perlhash iter busted

Sam Ruby noticed that the perlhash iter did not work and submitted a test case for it. Leo fixed it (and presumably applied the test).

Warnings Cleanup

Garrett Rooney submitted a patch to fix some warnings. Leo applied it.

Objects, Classes, Metaclasses, and MMD Dispatch

Dan’s attempt to spec out objects from last week led to some discussion of MMD. Leo suggested an implementation. Silence reigned.

More MMD Stuff

More Tcl Stuff

Will added more new stuff to Tcl. Yay, Will!

Internal Exception Clean Up

James deBoer submitted a patch that cleans up internal exception output. Later he submitted a second, better version of the patch. Warnock applies.

Dynamic Evaluation of PAST

Bernhard Schmalhofer submitted a patch to add support for PAST dynamic evaluation. Leo applied it.

Inline Caching

Leo explained inline caches and why 19 out of 20 calls like them. This led to his suggesting that some of the opcodes we have that take offsets from strings are a premature optimization. This led to some discussion about whether what he suggested was in Dan’s earlier mandate.

Inline Caching

Leo’s Suggestion

help Target in Make

Bernhard Schmalhofer (whose name makes me very thankful for copy and paste) submitted a patch adding a new help target to parrot/docs/Makefile. Will appied it.

Parrot and Strong Types

Cameron Zemek asked about supporting strongly typed languages on Parrot. I confused strong-typing and static-typing, but fortunately Dan came to the rescue with a good explanation. During the course of this thread, people suggested both Haskell and Prolog on Parrot. I like them both, a lot.

Original Message

Dan to the Rescue

Move libnci.def Out of Root Directory

Mitchell ::mumble:: provided a patch to do the above some time ago. Will rescued it and asked for a ruling. The ruling is that it should apply. I don’t know if anyone DID apply it, but someone should.

Tru64 cc/ld Issues

Jarkko Hietaniemi posted a problem with building on Tru64. Sam Ruby committed it.

If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. You might also like to send feedback to



Something wrong with this article? Help us out by opening an issue or pull request on GitHub