Kihagyás

4. előadás

divisors :: Integral a => a -> [a]
divisors n = [i | i <- [1..n], n `mod` i == 0]

isPrime :: Integral a => a -> Bool
isPrime n = divisors n == [1, n]

primes :: Integral a => Int -> [a]
primes i = take i [ i | i <- [2..], isPrime i ]
-- Két helyen használtuk az `i`-t, de a program mégis működött.
-- A belső `i` "felülírta" a külső LÁTHATÓSÁGÁT
-- felülárnyékolta, shadowing
-- Nem érdemes, nehezen olvasható
-- jobb: primes n = take n [ i | i <- [2..], isPrime i ] 

Ad-hoc polimorfizmus: vannak megszorítások

Paramterikus polimorfizmus: nincs megszorítás