Haskell でエラトステネスの篩やってみた

唐突に Haskell が書きたくなったので 久々に Haskell 入門!

[ソース]

prime :: [Int] -> [Int]
prime [] = []
prime (x:xs)
    | (>) (x*x) $ maximum xs = [x] ++ xs
    | otherwise = (++) [x] $ prime $ filter (\ y -> (/=) 0 $ mod y x) xs

main = print $ prime [2..100]

[出力]

[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]


Haskell 力が1.6ぐらい上がった気がする!
まぁなんか塩っぱい感じもしますが。
あと5回ぐらい Haskell 入門すれば慣れてきそう。