sub compute { my( $opsub, $x, $y, $rev )= @_; $y= $x->new( $y ) if ! ref $y; ( $x, $y )= ( $y, $x ) if $rev; return $opsub->($x,$y); } #### sub mul { my $mulsub = sub { bless \( $$_[0] + $$_[1] ) }; return &compute($mulsub,@_); }