-- List comprehensions div3 = [(x, x `div` 3) | x <- [1..20], x `mod` 3 == 0] -- Python -- [(x, x // e) for x in range(1, 20) if x % 3 == 0] cart a b = [(x, z) | x <- a, even x, y <- b, let z = y : "::"] -- cart [1..5] ['a'..'d'] mapLC f l = [f x | x <- l] filterLC f l = [x | x <- l, f x] ones = 1 : ones naturals = build 0 where build n = n : build (n + 1) naturalsA = let build n = n : build (n + 1) in build 0 naturals2 = 0 : zipWith (+) ones naturals2 naturalsLC = 0 : [n + 1 | n <- naturalsLC] primes1 = 2 : [n | n <- [3..], -- n este prim dacă nu are divizori primi null [primediv | -- primediv este un număr prim, din cele mai mici decât -- radical din n primediv <- takeWhile (< (round $ sqrt $ fromIntegral n)) primes1, n `mod` primediv == 0]] primes2 = sieve [2..] where sieve (p : numbers) = p : sieve [x | x <- numbers, x `mod` p /= 0] --inc x = x + 1 --inc x = (+1) x inc = (+1) --r = map (\x -> x + 1) [1..] r = map (+1) [1..] lista = ["un", "sir", "care", "", "contine", "cuvinte", "", "vide"] --nevide = filter (\s -> not (null s)) lista --nevide = filter (\s -> not $ null s) lista --nevide = filter (\s -> (not . null) s) lista nevide = filter (not . null) lista matrix = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]] p :: Show a => [[a]] -> String p = concatMap ((++ "\n") . printRow) where printRow = concatMap ((++" ") . show) {- transpose m = foldr (\ rowM partialT -> zipWith (:) rowM partialT) (map (\_ -> []) (head m)) m -} transpose m = foldr (zipWith (:)) (map (\_ -> []) (head m)) m -- putStr $ p $ transpose matrix --paren s = "(" ++ s ++ ")" -- mult mai lizibil --paren s = ("("++) ((++")") s) paren = ("("++) . (++")") -- ilizibil