I consistently fail to order hot dogs in Japanese (even though they use the English word here, too). I have to repeat myself every time and end up pointing at the menu. I hate this. I started to practice saying Hot Dog
to coworkers. They claim to understand me, but maybe are just being polite. I am quite close to just accepting whatever they understand the first time around (usually coffee, which I do not drink, if I am lucky, french fries).
Fri, 04 Mar 2005
The thousand and one reasons to love Perl: [14] Pugs
Ever since its inception just a few weeks ago, the new Pugs project has captured the minds of the Perl community. Among those of feeble faith Perl6 has taken on a distinct vaporware image, being under development for five years now without even an alpha release yet (the efforts so far have been mainly focused on creating the language specifications in a series of Apocalypses, Exegeses and Synopses, as well as on getting the underlying runtime engine right). It was not so helpful for the discussion that you could not try out the shiny new features of the Perl 6 language (which significantly differs from Perl 5) at all. But this has changed now, thanks to Pugs.
Pugs is a project of wonderful eccentricity. It has been single-handedly created by a lone hacker (apart from the official Perl6 project), has (or at least had) a funny name (Perl6 User's Golfing System), is implemented in Haskell, initially limited itself to a functional, side-effect-free subset of Perl6 called Featherweight Perl, has a version numbering scheme that in the Knuthian tradition converges against 2π, its own series of documentation called Apocrypha and an ugly dog as its logo.
Pugs provides a Perl6 interpreter that already implements an impressive (given the youth of the project) part of the language, definitely enough to start playing around with it. Some people expressed concern over whether Pugs will not draw away resources from the official effort, but I should think the opposite is the case. Pugs provides an easy hands-on entry for those who want to start working with Perl6, and it can be used to create test cases for the real compiler (which of course will be written in Perl6, as any good compiler can be expected to compile itself).
And now, for your amusement, the Pugs roadmap, and a working Perl6 code example (as you can see the new syntax is scary at first):
* 6.0: Initial release.
* 6.2: Basic IO and control flow elements; mutable variables; assignment.
* 6.28: Classes and traits.
* 6.283: Rules and Grammars.
* 6.2831: Role composition and other runtime features.
* 6.28318: Macros.
* 6.283185: Port Pugs to Perl 6, if needed.
#!perl6
use v6;
multi sub quicksort ( ) { () }
multi sub quicksort ( *$x, *@xs ) {
my @pre = @xs.grep:{ $_ < $x };
my @post = @xs.grep:{ $_ >= $x };
(@pre.quicksort, $x, @post.quicksort);
}
(1, 5, 2, 4, 3).quicksort.say;



