26 Jan
2008
26 Jan
'08
10:07 a.m.
I have come up with this myself ^_^ mps :: [a] → [[a]] → [[a]] mps [] _ = [] mps _ [] = [] mps (x:xs) yss = map (x:) yss ++ mps xs yss pms :: [a] → Int → [[a]] pms [] _ = [[]] pms _ 0 = [[]] pms xxs n = mps xxs (pms (xxs) (n - 1)) -- now bpms can pointlessly be redefined as bpms = pms [False,True] On 26/01/2008, Cetin Sert <cetin.sert@gmail.com> wrote:
How can I make a generic permutations function?
-- boolean permutations bpms :: Int → [[Bool]] bpms 0 = [[]] bpms n = map (False:) bss ++ map (True:) bss where bss = bpms (n - 1)
-- generic permutations pms a :: Int → [[a]]
Best Regards, Cetin Sert