NAME
   Algorithm::LatticePoints - Run code for each lattice points

SYNOPSIS
     use Algorithm::LatticePoints;
       my $al = Algorithm::LatticePoints->new(
           sub {
               printf "[%s]\n", join( ", ", @_ );
           }
       );
       $al->visit( [0,0,0,0], [9,9,9,9] );

       # instead of
       for my $t (0..9){
         for my $z (0..9){
           for my $y (0..9){
             for my $x (0..9){
               print "[$x, $y, $z, $t]\n";
             }
           }
         }
       }

DESCRIPTION
   Lattice-point handling is a common chore. You do it for image
   processing, 3-d processing, and more. Usually you do it via nested for
   loops but it is boring and tedious. This module loops for you instead.

 METHODS
   new(\&coderef)
     Pass a coderef which processes each lattice point.

   visit([$s1,$s2...$sn],[$e1,$e2...$en])
     Runs the code for each latice point between [$s1,$s2...$sn] and
     [$e1,$e2...$en], inclusive.

 EXPORT
   None.

PERFOMANCE
   Compared to good old for loops, you will lose 20% performance for 10^3
   lattice but only 4% for 10^4 lattice. The larger the lattice gets the
   less the performance loss impacts.

SEE ALSO
   perlsyn

AUTHOR
   Dan Kogai, <[email protected]>

COPYRIGHT AND LICENSE
   Copyright (C) 2007 by Dan Kogai

   This library is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself, either Perl version 5.8.8 or, at
   your option, any later version of Perl 5 you may have available.