This Fortnight in Perl 6, Feb. 9-22, 2005
Welcome to yet another fortnight summary. Lately, p6l has outstripped p6i in volume. While this used to be the norm, it has become a rare occurrence. Strange. Anyway, this summary would be brought to you by cookies, but I ate them all. So instead this summary is brought to you by the remaining chocolate chips. In other news, Autrijus Tang has just officially received a promotion to first-name-only status in these summaries, based on both his stellar work with Pugs and his highly identifiable name. He now joins the ranks of Larry, Dan, Madonna, and Leo.
Perl 6 Language
do { } while?
David Storrs wanted to know the best way to say do { } while($foo);
. Larry told him that s/do/loop/
would suffice.
nest
as a Primitive Looping Operation
Timothy Nelson receives credit for resurrecting the oldest thread I have seen brought back recently. Over two years ago, he mentioned a powerful looping structure that allowed for recursion. Now he has found a use for it.
Loop Entry
Joe Gottman wanted to execute a closure on every loop entrance, not upon every iteration. He thought ENTER
happened only once ever, but it turns out that it will do what he wants.
pop %hash
Rod Adams wants to be able to pop a key value pair out of a hash. Others wondered what to use it for. Someone mentioned an OrderedHash.
Higher Order Operators
Timothy Nelson wanted meta-operators. Larry gave him the full Unicode character set with which to define them. Tim was happy.
None and Nor Delimiters
Thomas Sandlaß suggested using \
as a none junction delimiter. He then extended this idea to provide a logical nor, \\
. Autrijus suggested !
for none. There was some argument about whether nor deserved such Huffmanization. Also, I think that the difference between //
and \\
would continually escape me. I have enough trouble writing code to deal with Windows filesystems.
Kudos to Autrijus
Damian proudly welcomed Autrijus to the ranks of the last-nameless-ones. He also lauded Autrijus’ amazing work at forcing a lazy language to pull a lazier one. I think we all agree.
Containers vs. Object References
Rod Adams wondered whether there was a litmus test that could determine if something deserved its own sigil. The answer appears to be mostly history. Larry suggested a simplistic way to create new sigils, although it would not provide interpolation. I think a blessed method for defining new sigils which do interpolate and provide some sort of type constraint and context would be really nifty. Also I want a million dollars in small, non-consecutive, unmarked bills. If you have either, please mail it to me.
Printing True
Autrijus wondered about true and false. Are they just 1 and 0? #t and #f? Larry answered bool::true
and bool::false
, but true
and false
will suffice when there is no ambiguity.
Quoted => LHS
Juerd wondered if =>
auto-quotes its left hand side. It does.
"@" x 75 ~ $zap =?= ("@" x 75) ~ $zap
Juerd mistakenly thought that ~
bound more tightly than x
. Only unary ~
binds that tightly, so he is safe.
Getting the key|value of a Pair
Steve Peters wondered how he could get the key or value from a pair. It turns out that the .key
and .value
method does what he wants until some twisted soul overrides them.
Junctions and Auto-threading
By far the longest topic this week was junctions. Some people worry that their auto-threaded behavior will cause plagues to ravage the earth and novices programmers to go blind. Others feel that without it Perl 6 will be a language suitable only to pond scum and cobol programmers. While one side believes that auto-threading repetition of sid effects will crash any database that interacts with Perl 6, the other side believes that requiring extra pragmas to unlock their full power will prevent junctions from curing cancer. Either way someone will be unhappy. It looked like the pendulum was swinging towards auto-threading, but its chief proponent will be away next week, so who knows if it can survive undefended. My favorite suggestion in all of this was to make Perl 6 a pure functional language and introduce monads.
Nullary vs. Non-slurpy
Autrijus found it distressing that he had to make an empty signature slurpy to make his quicksort sort quickly. Larry assured him that it was okay. This also led to a question of MMD tie-breaking. Remember to attach an is default
if you want your ties broken!
Pairs
Steve Peters had a few more questions about pairs, which made Osfameron notice that he could use pairs like Lisp’s dotted pairs. Larry admitted that he could and had hoped that no one would notice.
Octal Strings
Luke Palmer wondered which strings would change radix and to what. The consensus was that something needed to change, but no one is sure what.
Perl 6 Compilers
Pugs 6.0.8
Pugs continues to approach 2 * π with the release of 6.0.5. Later Autrijus decided that he should release more stuff and put out 6.0.8. It has many new features and a much improved test suite. You should contribute tests. All the cool people are.
List of builtins
Autrijus wondered if there was a list of builtins anywhere. Patrick pointed him to his start.
Perl 6 Now
Autrijus wondered if the unit tests for Perl 6 Now were available. Scott Walters told him that they were public domain. Autrijus gleefully sicced a small, ugly dog on them.
Pugs tests
??? proved that he was cool by providing Pugs tests. So did Steve Peters, Benjamin Smith, and Stevan Little. I bet you wish you were cool too.
Pugscode.org
Autrijus registered pugscode.org and populated it.
%*ENV
in pugs
Rafael Garcia-Suarez wanted access to %*ENV
, so he added it with tests.
Parrot
GNU R
Yves Breitmoser wants to improve the support for GNU R in Perl. Aaron Sherman suggested using Parrot as a back-end for Parrot, which would allow any language that targets Parrot to use R.
make html
Markus Amslser submitted a patch to fix make html
. Leo applied it.
Win32 bind(accept(listen()))
Markus Amslser submitted a patch adding bind
, listen
, and accept
on Win32. Leo applied it.
Commit Privileges
Bernhard Schmalhofer received commit privileges in recognition of his many high quality patches. Congrats Bernhard!
Tiny Webserver
Markus Amslser also provided a patch to allow his tiny webserver to run on Linux. Leo applied it.
FreeBSD Build Failure
Adriano Ferreira fixed some problems with the FreeBSD build. Leo applied the patch.
Parrot 0.1.2
Will Coleda continued pushing for a 0.1.2 release. Leo told him that there would be a release after the German Perl Workshop, which should be ending soon.
Linux PPC
Leo attempted to fix the longstanding issues with Linux PPC configure.
Failing Python Tests
Andy Dougherty noticed failures on some of the dynclasses/py*.t
tests. He is working with Leo on providing enough information to solve the problem.
PyPy
Christian Tismer posted to the list informing everyone about the PyPy sprint at Washington, DC’s PyCon 2005. They are eager to compare notes with other developers.
string_init
and ICU data dir
Ron Blaschke noticed that Parrot choked on an empty ICU data dir. Leo fixed it.
Win32 Parrot
Ron Blaschke wants to improve Parrot building on Win32. He has offered to add the necessary PARROT_API
macros and do other footwork.
- 9 PARROT_API
- gdbm Linkage
- 1 outdated rt ticket
- old rt ticket
- fix libnci_test
- old ticket
- out of date ticket
- dbm troubles
Tail Calls
Bob Rogers wants to make tail calls without knowing the last call’s return values. Currently he just lies to IMCC to make it work. Leo pointed him to interpinfo .INTERPINFO_CURRENT_CONT
and also suggested adding a tail_call
op.
The Usual Footer
Posting via the Google Groups interface does not work. To post to any of these mailing lists please subscribe by sending email to perl6-internals-subscribe@perl.org, perl6-language-subscribe@perl.org, or perl6-compiler-subscribe@perl.org. 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 ubermatt@gmail.com.
Tags
Feedback
Something wrong with this article? Help us out by opening an issue or pull request on GitHub