======================================================= Object-Oriented Programming with Perl Vol.21 by Tatsuhiko Miyagawa ======================================================= 1. Topics ______________________ 前回も紹介した、Perl 6 という言語の片鱗を見ることが出来る Larry Wall の黙示録、そしてそれへの注釈が Damian Conway の Exegesis 2 です。 * メソッド呼び出しの変更 * プロパティという概念の追加 * is 演算子 * 変数のプレフィクスの変更 といった興味深いトピックが、具体的なプログラムサンプルとともに掲載され ています。ちょっと一部をのぞいてみましょう。 ____ So, without further ado, let's write some Perl 6: # bintree - binary tree demo program # adapted from "Perl Cookbook", Recipe 11.15 use strict; use warnings; my ($root, $n); while ($n++ < 20) { insert($root, int rand 1000) } my int ($pre, $in, $post) is constant = (0..2); print "Pre order: "; show($root,$pre); print "\n"; print "In order: "; show($root,$in); print "\n"; print "Post order: "; show($root,$post); print "\n"; $*ARGS is chomped; $ARGS prompts("Search? "); while (<$ARGS>) { if (my $node = search($root, $_)) { print "Found $_ at $node: $node{VALUE}\n"; print "(again!)\n" if $node{VALUE}.Found > 1; } else { print "No $_ in tree\n"; } } exit; ######################################### sub insert (HASH $tree is rw, int $val) { unless ($tree) { my %node; %node{LEFT} = undef; %node{RIGHT} = undef; %node{VALUE} = $val is Found(0); $tree = %node; return; } if ($tree{VALUE} > $val) { insert($tree{LEFT}, $val) } elsif ($tree{VALUE} < $val) { insert($tree{RIGHT}, $val) } else { warn "dup insert of $val\n" } } sub show { return unless @_[0]; show(@_[0]{LEFT}, @_[1]) unless @_[1] == $post; show(@_[0]{RIGHT},@_[1]) if @_[1] == $pre; print @_[0]{VALUE}; show(@_[0]{LEFT}, @_[1]) if @_[1] == $post; show(@_[0]{RIGHT},@_[1]) unless @_[1] == $pre; } sub search (HASH $tree is rw, *@_) { return unless $tree; return search($tree{@_[0]<$tree{VALUE} && "LEFT" || "RIGHT"}, @_[0]) unless $tree{VALUE} == @_[0]; $tree{VALUE} is Found($tree{VALUE}.Found+1); return $tree; } ____ Damian Conway さんの許可をもらって、この邦訳を Web で公開しています。 http://bulknews.net/lib/doc-ja/exegesis2.ja.html?m ぜひご覧になってみてください。Perl 6 に乗り遅れないように...。 2. YARPC 19101 ___________________ 5/26 に Yet Anothet Ruby/Perl Conference が行われました。とても楽しい イベントでした。運営に関わられたみなさまには心から感謝したいとおもいま す。 Lightning Talks にて利用したスライドをこちらで公開しています。(PDF形式) http://bulknews.net/lib/slides/yarpc19101/ 3. 次回予告 _____________________ Damian Conway の NEXT.pm について紹介したいと思います。 -- OOP w/ Perl http://bulknews.net/lib/