allfrom n = n:(allfrom (n+1)) allnum = allfrom 1 satP p xs = [x | x <- xs, (p x)] numsatP p = satP p allnum -- altre possibili implementazioni di satP: sat2P p [] = [] sat2P p (x:xs) = if (p x) then x:(sat2P p xs) else (sat2P p xs) sat3P p [] = [] sat3P p (x:xs) | (p x) = (x:(sat3P p xs)) | otherwise = (sat3P p xs)