I haven't used all the features of this module, just the permutation portion of it. I found the documentation easy to understand and it helped me greatly in quickly replacing a portion of existing code. I especially liked the iterator "next_permutation()". I initially created a recursive algorithm and replaced it with Math::Combinatorics as Math::Combinatorics was much quicker. Not only was it faster than my recursive alg, it was also correct; which deserves applause for something that claims to be at some ?arbitrary? version less than 1.
One of the other reviewers of this module suggested that M::C fills a small niche, as though that were a shortcoming of the module. In fact the beauty of CPAN is that it is chock-full of modules that fill small niches. It's part of what makes us perl programmers so productive. In the case of M::C, it was very useful to me indeed. I develop a package of software for analyzing a particular sort of x-ray physics data. M::C allowed me to add a very powerful new data analysis tool to the package in a short afternoon of coding. As another reviewer points out, combinatorics is easy to get wrong. M::C gets it right in a way that is a pleasure to use. I am happy to give this module top marks.
I started writing a module that implements a small subset of this module... until someone pointed out Math::Combinatorics to me.
It shows snippets for some, but not all, of the features. I tried to extend one and received a runtime error.
I tried another snippet (the morse one) and received a runtime error (it recommended calling a different method). When I amended the example to call the other method, I received a runtime error.
There is no eg/ directory of example programs that lets you try out the different aspects of the module.
I had a bad first impression with this module. I thought that the different functions were not documented. It turns out that they are, but at the end of the POD, rather than at the top. When I got to the SEE ALSO section, I stopped scrolling and thus missed the rest of the documentation.
The documentation should be rearranged along a more standard order. At a first glance, it looks as if the only information you get is a hyperlink to a Mathworld article and from there you're on your own. Putting the documentation on how to call the functions at the end is very misleading.
Combinatorics is something done wrong by many people. They talk about permutations when they really mean combinations and vice versa. Implementations - while they should be rather simple and straighforward - have an unnatural tendency to be buggy or eat your memory quickly (due to the large problem space).
Thus, Math::Combinatorics is a worthy addition to CPAN. It has thorough documentation with references to literature and related modules.
My only gripe is that the tests could be a little more exhaustive.