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.
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.
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”…
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…
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.
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
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.
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.
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.
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.
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. ;-)
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.
Leo removed some IMCC globals. Nice work.
Andy Dougherty fixed a problem with writing a file in a non-existent directory. Leo applied the patch.
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.
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.
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.
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.
Will added a BUG to RT for this.
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.
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.
There was a little confusion about whether variable declarations could follow code in C89. The answer is not.
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).
Garrett Rooney submitted a patch to fix some warnings. Leo applied it.
Dan’s attempt to spec out objects from last week led to some discussion of MMD. Leo suggested an implementation. Silence reigned.
Will added more new stuff to Tcl. Yay, Will!
James deBoer submitted a patch that cleans up internal exception output. Later he submitted a second, better version of the patch. Warnock applies.
Bernhard Schmalhofer submitted a patch to add support for PAST dynamic evaluation. Leo applied it.
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.
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.
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.
Jarkko Hietaniemi posted a problem with building on Tru64. Sam Ruby committed it.
The Usual Footer
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 firstname.lastname@example.org.
Something wrong with this article? Help us out by opening an issue or pull request on GitHub