
Do you intend to use list monad? Since you bind the result of zip into powers, powers has type (a,b). try changing that line:
let powers = zip coeffs (iterate (+1) 0)
As Baojun says, you'd better to write pure function
and isolate I/O from it.
2016-04-22 12:33 GMT+09:00 Eunsu Kim
Hi
i have a problem in my code!
here is my code:
-- Baic I/O and Loop (50 Points)
evalpoly = do putStr "What is the degree of polynomial: " degree <- getLine coeffs <- (funcOfCoeff ((read degree::Int)+1) []) putStr "What value do you want to evaluate at: " value <- getLine putStr "The value of the polynomial is: " putStr (show (polyEvaluate (coeffs) (read value :: Float) )) putStr "\n"
--function loop to get coefficient--
funcOfCoeff 0 coeffs = do --to check the degree of 0 return coeffs --return list of coefficient
funcOfCoeff degree coeffs = do putStr ("What is the x^" ++ show(degree-1)) putStr " coefficient: " coeff <- getLine loop <- funcOfCoeff (degree-1) ((read coeff :: Int) : coeffs) return loop
polyEvaluate (coeffs) x = do powers <- zip coeffs (iterate (+1) 0) result <- map (\(a,b)-> a+b) powers —PROBLEM IS HERE!!!! return result
here is error message:
in very bottom function (polyEvaluate), why is not working “result <- map (\(a,b) -> a+b) powers” ???
in Prelude, it is working
Thanks!
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners