with which model in Combinatorics in mind do you want that function? with or without repetition?
<http://en.wikipedia.org/wiki/Combinatorics#Permutation_with_repetition> the order matters and each object can be chosen more than once <http://en.wikipedia.org/wiki/Combinatorics#Permutation_without_repetition> the order matters and each object can be chosen only once <http://en.wikipedia.org/wiki/Combinatorics#Combination_without_repetition> the order does not matter and each object can be chosen only once <http://en.wikipedia.org/wiki/Combinatorics#Combination_with_repetition> the order does not matter and each object can be chosen more than once -------------------------------------------------- import Data.List perm3_with_rep,perm3_without_rep,comb3_with_rep,comb3_without_rep :: [a] -> [(a, a, a)] perm3_with_rep es = [(x,y,z)|x<-es,y<-es,z<-es] perm3_without_rep es = [(x,y,z)|let it s=zip s $ zipWith (++) (inits s) (tail $ tails s),(x,xr)<-it es,(y,yr)<-it xr,z<-yr] comb3_with_rep es = [(x,y,z)|let it=init.tails,xs@(x:_)<-it es,ys@(y:_)<-it xs,z<-ys] comb3_without_rep es = [(x,y,z)|let it=init.tails,(x:xr)<-it es,(y:yr)<-it xr,z<-yr] comb3_to_perm3 :: [(a, a, a)] -> [(a, a, a)] comb3_to_perm3 xyz = concat[perm_without_rep [x,y,z]|(x,y,z)<-xyz] -------------------------------------------------- - marc
pgpjouD4QrpWb.pgp
Description: PGP signature
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe