
putStr (show (polyEvaluate (coeffs) (read value :: Float) ))
Here ``polyEvaluate`` is inferred as a Show(able), However, ``polyEvaluate``
definition on the bottom returns a monad. (In haskell, meaning of return is
quite different than imperative programming language).
It's encouraged to write pure functions without effects, don't use monad
unless it's really necessary. rewrite ``polyEvaluate`` as below should make
the example compile.
polyEvaluate (coeffs) x = map (\(a, b) -> a+b) . zip coeffs . iterate (+1)
$ 0
Thanks
baojun
On Thu, Apr 21, 2016 at 8:33 PM 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