[Haskell-beginners] How to write replicateM with interspersedguards?

anyzhen jiangzhen3s at qq.com
Tue Oct 4 15:23:59 CEST 2011


like this?
let inits' xs = drop 1 $ inits xs in
let getLists n m = inits' take n (repeat m) in
f m n =map (\x-> guard $ f x) xs 
          where xs =getLists n m 
  
 
------------------ Original ------------------
From: "Sebastien Zany"; 
Date: 2011年10月4日(星期二) 晚上8:27
To: "Haskell Beginners"; 
Subject: [Haskell-beginners] How to write replicateM with interspersedguards?

 
What would be the idiomatic way to write a function which expands to the following?

f n m = do {
x1 <- m;
guard (f [x1]);
x2 <- m;
guard (f [x1, x2]);
 .
.
.
xn <- m;
guard (f [x1,x2,...,xn]);
}


What I'm trying to do is generate a list of lists of length n with some property (checked by f) efficiently.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20111004/e72583ad/attachment.htm>


More information about the Beginners mailing list