RosettaCodeData/Task/Permutations/Shen/permutations-1.shen

19 lines
349 B
Plaintext

(define permute
[] -> []
[X] -> [[X]]
X -> (permute-helper [] X))
(define permute-helper
_ [] -> []
Done [X|Rest] -> (append (prepend-all X (permute (append Done Rest))) (permute-helper [X|Done] Rest))
)
(define prepend-all
_ [] -> []
X [Next|Rest] -> [[X|Next]|(prepend-all X Rest)]
)
(set *maximum-print-sequence-size* 50)
(permute [a b c d])