Couldn't match expected type `(t -> t) -> IO ()' against inferred type `IO ()' In the expression: doAverage (n + 1) (media 0 0) In the expression: if sample /= 0 then doAverage (n + 1) (media 0 0) else putStrLn "ciao" In the expression: do s <- getLine let sample = read s if sample /= 0 then doAverage (n + 1) (media 0 0) else putStrLn "ciao" Couldn't match expected type `(t -> t) -> IO ()' against inferred type `IO ()' In the expression: doAverage (n + 1) (media 0 0) In the expression: if sample /= 0 then doAverage (n + 1) (media 0 0) else putStrLn "ciao" In the expression: do s <- getLine let sample = read s if sample /= 0 then doAverage (n + 1) (media 0 0) else putStrLn "ciao"
here is my code
module Main
where
import IO
--import Random
--media :: forall t. (Fractional t) => t -> (t, t) -> (t, t)
media s a n= (a*n+s)/(n+1)
doAverage ::(Num t =>(t,t)-> IO ())
main =do
hSetBuffering stdin LineBuffering
-- num <- randomRIO (1::Int, 100)
putStrLn "calcolo iterativo della media"
doAverage (1,0) --sample numero campioni e media attuale
doAverage (n,aver) =do
s<-getLine
let sample = read s
--putStrLn ("il valore medio dopo il "++(show (n+1)++"campione è"++(show
(media sample (aver,n))))
if sample/=0
then doAverage (n+1) (media 0 0) --sample aver n)
else putStrLn "ciao"
thanks in advance


Sign In
Create Account

Back to top









