Data.List: add product()
Data.List: add combinations()
Data.List: rewrite permutations() using product()