Memory-efficient Cartesian products, combinations and permutation on collections.
This module offers memory-efficient views on combinatoric collections. Methods of the views create objects only when needed. Moreover, produced objects during iterations are free to be collected and their memory reused.
This enable these views and method to works with very combinatoric large collections.
When small combinatoric views need to be kept in memory (for fast access by example).
Collection::to_a method and other related factories can be used to transform
the combinatoric views into extensive collections,