only :: (Integral nt) => nt -> [Bool] only n = [ x `mod` n == 0 | x <- [0..] ] each :: (Integral nt) => nt -> [a] -> [a] each n xs = [ snd x | x <- filter fst $ zip (only n) xs ] main = do print $ each 4 [1..50]