{- To compile this file: ghc haskellHandout.hs -} productSeries :: Int -> Float productSeries k = product [1/fromIntegral(x) | x <- [1..k]] productSeries2 :: Int -> Float productSeries2 k = foldl (*) 1 (map (\x -> 1/fromIntegral(x)) [1..k]) main = do let k = 1 in putStrLn ("productSeries "++show(k)++" is "++show(productSeries k)) let k = 5 in putStrLn ("productSeries "++show(k)++" is "++show(productSeries k)) let k = 1 in putStrLn ("productSeries2 "++show(k)++" is "++show(productSeries2 k)) let k = 5 in putStrLn ("productSeries2 "++show(k)++" is "++show(productSeries2 k))