zip3a' aas bbs ccs = [ (a, b, c) | a <- aas, b <- bbs, c <- ccs] -- 5. Scrieti in doua moduri o functie map2 care are ca argument o functie cu do ua argumente f si doua liste [x1,x2 ], [y1,y2,..] si intoarce lista [f(x1,y1), f (x2,y2),..]. map2 :: (a -> b) -> [a] -> [a] -> [(b, b)] map2 f (a:aas) (b:bbs) = (f a, f b) : map2 f aas bbs map2 f _ _ = [] -- 6. Scrieti o functie fn care are ca argument o functie f si un numar n iar c a rezultat fn(x)=f(f(..(f(x)))) (de n ori) fn :: (Num b, Eq b) => (a -> a) -> b -> a -> a fn f 1 x = f x fn f n x = f $ fn f (n - 1) x -- 7. Folosind ciurul lui Eratostene creati o lista infinita care contine numere le prime. primes = sieve [2..] where sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p /= 0]