-- 4! = 24 permutations say (permute 0 1 2 3); say (permute 0 1 3 2); say (permute 0 2 1 3); say (permute 0 2 3 1); say (permute 0 3 1 2); say (permute 0 3 2 1); say (permute 1 0 2 3); say (permute 1 0 3 2); say (permute 1 2 0 3); say (permute 1 2 3 0); say (permute 1 3 0 2); say (permute 1 3 2 0); say (permute 2 0 1 3); say (permute 2 0 3 1); say (permute 2 1 0 3); say (permute 2 1 3 0); say (permute 2 3 0 1); say (permute 2 3 1 0); say (permute 3 0 1 2); say (permute 3 0 2 1); say (permute 3 1 0 2); say (permute 3 1 2 0); say (permute 3 2 0 1); say (permute 3 2 1 0); -- This array should be flattened to support case (permute array) say (permute 3 2 [1; 0]); -- Test if nested arrays are preserved say (permute [[3; 2]; 4] [1; 0]); say (permute [0; 1; 4; [3; 2]]);