Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

autrijus (1505)

autrijus
  (email not shown publicly)
http://pugs.blogs.com/

Journal of autrijus (1505)

Sunday May 22, 2005
07:36 PM

Day 111: Hyper operators and named blocks.

[ #24822 ]
I mentioned yesterday that hyperoperators are coming soon. As expected, today iblech and I hacked them in. Now all prefix, infix and postfix operators have hyper forms, regardless of whether they are user-defined or builtin:

pugs> (1,2,3) >>-<< (4,5,6)
(-3, -3, -3)
pugs> -<< (4,5,6)
(-4, -5, -6)
pugs> sub postfix:<!> { [*] 1..$_ }; (4, 5, 6) >>!
(24, 120, 720)

But it gets scarier when you mix hyper metaoperator with reduce metaoperators:

pugs> [+]<< ([1,2], [3,4]);
(3, 7)
pugs> [+]<<<< ([[1,2], [3,4]], [[5,6], [7,8]])
((3, 7), (11, 15))

iblech implemented FIRST {...} with trailing undef, INIT {...}, and CHECK {...}. Together with the existing support for BEGIN {...} and END {...}, we have a pretty good coverage of global closure traits now. Next in sight would be things like PRE and POST...

clkao is working on Benchmark.pm, which really wants times() support. I walked him through the implementation and testing in 30 minutes; Corion then ported the underlying getProcessTimes Haskell function to Win32.

clkao tweaked cmp_ok() from Test.pm to show the name of the comparison operator used. I hacked in &code.name to support this, as well as &code.arity.

Juerd added quickref/reduction for reduction metaoperators, and iblech contributed some more examples to it.

Backtrace in error messages is now much more legible:

$ ./pugs -e 'sub{ sub {die "Error!"}.() }.()'
*** Error!
    at -e line 1, column 1-32
       -e line 1, column 6-28
       -e line 1, column 11-23

iblech added the ability of dumping raw AST structure to the interactive shell. Following that, I reorganised all commands in the shell to being with :. Hopefully this will eliminate the confusing situation of !1 evaluating to 1 in the shell.

Stevan continued to study metaclass koans, aiming for grokking the inner working of Perl 6's OO model. He recorded his current understanding in the Perl 6 Meta Meta Class Hierarchy document.

Also in the metamodel front, mugwump updated Perl 6 Meta Model with the latest insights.

asavige added some precedence tests, more todo tests to assign, and reported that 1..Inf as parsed as &.Inf(1). I fixed it a while later.

I also implemented the three "yada" literals: ??? that warns, !!! that dies, and ... that fails -- i.e. dies when use fatal is in effect, otherwise return a delayed error that dies when actually evaluated.

gaal added missing signatures for the Win32-specific parts of source code. With this, Haddock will finally recognise all our toplevel functions.

knewt, our new committer, made the backend part in command line parsing case-insensitive, so pugs -Bparrot will also work.

Aankhen added support for stringifying cookies to CGI.pm, un-evalled passing OO tests, and cleaned up operator_overloading.t.

adehohum added many tests, ranging from OO, syntax, operators to rules. scook0 also added tests for exclusive-range operators.

eric256 improved the wizard.p6 game by adding rooms and more enemies -- it seems that the player doesn't stand a chance against the Skeleton -- but curiously, fleeing from the room made the enemy disappear. This bug would probably not last for long...

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.