RosettaCodeData/Task/Trabb-Pardo-Knuth-algorithm/Ela/trabb-pardo-knuth-algorithm.ela

25 lines
557 B
Text
Raw Permalink Normal View History

2016-12-05 22:15:40 +01:00
open monad io number string
2013-04-11 01:07:29 -07:00
2016-12-05 22:15:40 +01:00
:::IO
take_numbers 0 xs = do
return $ iter xs
where f x = sqrt (toSingle x) + 5.0 * (x ** 3.0)
2013-04-11 01:07:29 -07:00
p x = x < 400.0
2016-12-05 22:15:40 +01:00
iter [] = return ()
2013-04-11 01:07:29 -07:00
iter (x::xs)
2016-12-05 22:15:40 +01:00
| p res = do
putStrLn (format "f({0}) = {1}" x res)
iter xs
| else = do
putStrLn (format "f({0}) :: Overflow" x)
iter xs
2013-04-11 01:07:29 -07:00
where res = f x
2016-12-05 22:15:40 +01:00
take_numbers n xs = do
x <- readAny
take_numbers (n - 1) (x::xs)
2013-04-11 01:07:29 -07:00
2016-12-05 22:15:40 +01:00
do
putStrLn "Please enter 11 numbers:"
take_numbers 11 []