module Main
where
import IO
main = do
doInput list
doInput list = do
hSetBuffering stdin LineBuffering
putStrLn "Please enter a number"
num <- getLine
list = num:List
if num == 0
then do computeSum list
then do comute factorial list
else do doInput list
computeSum list = do
erg = foldr (+) 0 list
doOutput erg "Sum"
computefactorial = do
erg = foldr (*) 1 list
doOutput erg "Faktorial"
doOutput erg string = do
module Main
where
import IO
main = do
xs <- doInput []
putStrLn $ "The sum is " ++ show (sum xs)
putStrLn $ "The product is " ++ show (product xs)
computeFactorials xs
doInput list = do
hSetBuffering stdin LineBuffering
putStrLn "Please enter a number"
num <- readLn
if num == 0
then return list
else doInput (list ++ [num])
factorial n = product [1..n]
computeFactorials [] = return ()
computeFactorials (n:ns) = do
putStrLn $ (show n) ++ " factorial is " ++ (show (factorial n))
computeFactorials ns
module Main
where
import IO
main = do
hSetBuffering stdin LineBuffering
list <- doInput []
doOutput (sum list) "Sum"
doOutput (product list) "Faktorial"
doInput :: [Int] -> IO [Int]
doInput list = do
putStrLn "Please enter a number"
num <- readLn
let list' = num:list
if num == 0 then return list
else doInput list'
-- alternative idea for input:
doInput2 :: IO [Int]
doInput2 = do
putStrLn "Please enter a number"
num <- readLn
if num == 0 then return []
else do res <- doInput2
return (num:res)
doOutput erg str = do
putStrLn $ str ++ " " ++ show erg
module Main
where
import IO
main = do
doInput []
doInput list = do
hSetBuffering stdin LineBuffering
putStrLn "Please enter a number"
num <- getLine
let list' = num:list
if num == 0
then do computeSum list'
computeFactorial list'
else do doInput list'
computeSum list = do
let erg = foldr (+) 0 list
doOutput erg "Sum"
computeFactorial = do
let erg = foldr (*) 1 list
doOutput erg "Faktorial"
doOutput erg string = do
...