Converted the algorithm to C++ and Haskell
Python should really warn about overriding builtin names.
Gave Permutation.cpp a public default constructor