primes :: [Integer] -> [Integer] primes (x:xs) = x : primes (filter ((/= 0) . (`mod` x)) xs) sumPrimes :: Integer -> Integer sumPrimes num = foldl (+) 0 (takeWhile (<= num) (primes [2..]))