sylvester :: [Integer] sylvester = map s [0 ..] where s 0 = 2 s n = succ $ foldr ((*) . s) 1 [0 .. pred n] main :: IO () main = do putStrLn "First 10 elements of Sylvester's sequence:" putStr $ unlines $ map show $ take 10 sylvester putStr "\nSum of reciprocals by sum over map: " print $ sum $ map ((1 /) . fromInteger) $ take 10 sylvester putStr "Sum of reciprocals by fold: " print $ foldr ((+) . (1 /) . fromInteger) 0 $ take 10 sylvester