fork download
  1. import Data.Sequence as Seq ((|>), empty, viewl, ViewL (..), length, index, singleton)
  2.  
  3. isPrime primes n = let
  4. factors = viewl primes
  5. inner EmptyL = True
  6. inner (factor :< others) = if n `mod` factor == 0 then False else isPrime others n
  7. in inner $ viewl primes
  8.  
  9. nextPrime primes = let
  10. findPrime n = if isPrime primes n then n else findPrime (n + 1)
  11. in primes |> (findPrime $ primes `index` (Seq.length primes - 1) + 1)
  12.  
  13. results = foldr (.) id (replicate 10000 nextPrime) (singleton 2)
  14.  
  15. result = results `index` (Seq.length results - 1)
  16.  
  17. main = putStr $ show result
  18.  
  19.  
stdin
Standard input is empty
compilation info
[1 of 1] Compiling Main             ( prog.hs, prog.o )
Linking prog ...
stdout
104743