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 <[EMAIL PROTECTED]> 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 >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe