Небольшая иллюстрация элегантности Хаскелля.
Классический алгоритм получения простых чисел методом Решето Эратосфена.sieve :: (Integral a) => [a] -> [a] -> [a]
sieve (x:xs) (p:ps)
| x `rem` p == 0 = sieve [y | y <- xs, y `rem` p /= 0] ps
| otherwise = x : sieve xs (p:ps)
primes :: (Integral a) => [a]
primes = 2 : sieve [3..] primes
main :: IO ()
main = do
print $ take 10 primes
putStrLn "Press any key for exit ..."
Комментариев нет:
Отправить комментарий
Публикуются только комментарии, которые показались автору блога заслуживающими внимания.