
Hi, I have sumIs2020P1' xs = do x <- xs y <- xs guard (x + y == 2020) pure (x,y) which has been desugared from a list comprehension I would like to reduce this even more using >>= So I do sumIs2020P1'' xs = (a,b) where (a,b):rest = filter (\(x,y) -> x + y == 2020) pairs pairs = xs >>= \x -> xs >>= \y -> pure (x,y) but really I would like the guard to be within the >>= sections but I could not work out how to do it! i.e. I’m looking for something like (pseudo code) pairs = xs >>= \x -> xs >>= \y -> if (x + y == 2020) then pure (x,y) else DO_NOTHING which would then allow the filter to be removed. Many Thanks Mike Dr Mike Houghton mike_k_houghton@yahoo.co.uk