如何在一行上打印输出?

今天我正在研究这段代码,它输出一系列“数组”的平均值,数据以这种格式输入:

3               #Number of arrays to get the average from
2   3   0       #First array
4   5   0       #Second array
1   4   5   0   #Third array

我编写了一个输出数据的代码,但意识到它会像这样打印它:

2  #Average (Int) of the 1st array
4  #Average (Int) of the 2nd array
3  #Average (Int) of the 3rd array

(考虑到计算平均值时不使用每个数组末尾的0,它仅用于指示数组末尾)

我的问题是,如何正确更改代码以便可以像这样输出数据?:

2  4  3

这是我一直在使用的代码:

sumList :: [Int] -> Int sumList []    = 0 sumList (u:v) = u + sumList v

funavg :: Int -> IO () funavg numitint = if numitint==0 then return ()
                                else do
                                arrs <- getLine
                                let arrnum = (map read(words arrs) :: [Int])
                                let total = sumList arrnum
                                let avg = div total ((length arrnum)-1)
                                print avg
                                funavg (numitint - 1)

main :: Prelude.IO () main = do   
  numits <- getLine   
  let numitint = read numits :: Int   
  funavg numitint

我搜索了许多文档和网站,但找不到理想的答案。使用递归是强制性的。

任何帮助都非常感谢:D

回答

print等价于putStrLn . show并且为了方便打印任何Show类型的单个值而提供。

print没有省略换行符的标准库伴侣,但putStrLn有:它被称为putStr. 而不是print avg,考虑

putStr $ show avg


以上是如何在一行上打印输出?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>