    # File lib/facets/core/enumerable/cart.rb, line 17
        def cartesian_product(*enums, &block)
          result = [[]]
          while [] != enums
            t, result = result, []
            b, *enums = enums
            t.each do |a|
              b.each do |n|
                result << a + [n]
              end
            end
          end
          if block_given?
            result.each{ |e| block.call(e) }
          else
            result
          end
        end