Haskell在数组上打印映射

时间:2014-09-25 14:23:37

标签: haskell printing map

我练习的问题是在stdin上输入文本并希望在stdout上输出。 它们在我读取的第一行给出一个整数T,然后是T行。对于以下T行,我有一个带整数的函数,并返回一个必须打印的整数。所以我的输出应该是T行。 我现在陷入困境:

main = do
    strcases <- getLine
    map (calculate) [1..(read strcases)]

calculate _ = do
    strp <- getLine
    print $ addone (read strp)

addone x = x+1

当然这暂不起作用。你能说明如何打印T行输出吗?

1 个答案:

答案 0 :(得分:0)

您可以使用readLngetLine结合的readreplicateM_的{​​{1}}来重复Control.Monad行动(或任何行动) monad)给定次数:

IO

注意,import Control.Monad main :: IO () main = do n <- readLn replicateM_ n calculate calculate :: IO () calculate = do x <- readLn print $ addone x addone :: Int -> Int addone x = x+1 上的下划线后缀表示将丢弃每个已执行操作的返回值。没有下划线后缀的替代函数将返回一个列表,其中包含每个已执行操作的返回值,在这种情况下我们不需要。