> While we are here, can reduce itself generate an average? I.e. something
   > cuter than:
   > 
   >    $avg = reduce { $_[0] + $_[1] } @numbers / @numbers;

Of course.

This is about as cute as it gets:

    $ave = ${reduce( bless( \(((ref(^x)?$^x*ref(^x):^x)+^y)/((ref(^x)||1)+1)),
                            (ref($^x)||1)+1),
                     @numbers)
            } ;


And this non-curried version of the same *actually runs* under 5.00502:

    use builtin 'reduce';

    $ave = ${reduce(sub{bless \(((ref($_[0])?${$_[0]}*ref($_[0]):$_[0])+$_[1])/
                                ((ref($_[0])||1)+1)),
                               (ref($_[0])||1)+1
                        },
                        @numbers)
            } ;


Damian

Reply via email to