haskell IO中的新线

haskell IO中的新线,haskell,Haskell,我无法使用以下代码打印多行输出 average l = (sum l) / (fromIntegral (length l)) readDoubles s1 s2 = putStr (s1++"\n"++s2) >> do x <- readDoublesHelper; return ("The average is " ++ (show (average x)) ++ " \n

我无法使用以下代码打印多行输出

average l = (sum l) / (fromIntegral (length l))

readDoubles s1 s2 = putStr (s1++"\n"++s2) >>
                        do x <- readDoublesHelper; return ("The average is " ++ (show (average x)) ++ " \n" ++ "The maximum is " ++ (show (maximum x)) ++ "\n" ++ "The minimum is " ++ (show (minimum x)) ++ "\n")

readDoublesHelper = putStr "Enter a number: " >>
                        do line <- getLine;
                            if line == "done"
                            then return [];
                            else do xs <- (readDoublesHelper)
                                    return ((read line :: Float): xs)

interface = readDoubles "Enter some numbers." "When finished, type ’done’. \n"
但我希望输出像这样打印

The average is 4.5 
The maximum is 7.0
The minimum is 2.0
注意
“平均值为4.5\n最大值为7.0\n最小值为2.0\n”
实际上未打印

重新格式化
readDoubles

readDoubles s1 s2=do
putStr(s1++“\n++s2)
x注意
“平均值为4.5\n最大值为7.0\n最小值为2.0\n”
实际上未打印

重新格式化
readDoubles

readDoubles s1 s2=do
putStr(s1++“\n++s2)

x当使用ghc编译器而不是ghci运行时,您可能需要在
putStr”之后输入一个数字:
,以便用户在适当的时候看到提示。当使用ghc编译器而不是ghci运行时,您可能需要在
putStr”之后输入一个数字:
供用户及时查看提示。
The average is 4.5 
The maximum is 7.0
The minimum is 2.0
readDoubles :: String -> String -> IO String