Haskell - 打印多个非字符串变量

New*_*ewb 5 python haskell output

我正在编写一个程序,它从命令行读取两个整数,将它们加倍,然后将它们打印出来。所以我的程序读入 Args,将它们转换为 Ints,然后将它们加倍。我的问题是关于输出:在 Python 中,我可以写:

>>>a = 9
>>>b = 10
>>>print a,b
9 10

这给了我满意的输出。在 Haskell 中,有一个类似的print语句来打印给定的变量 - 例如

Prelude> let a = 10
Prelude> print a
10

我想知道是否有一个等效于 python 的 Haskell print a,b,所以我可以一次打印多个变量。否则,我必须做的是将加倍的 Int 转换回字符串,然后编写:
putStrLn (doubledint1 ++ " " ++ doubledint2)

有没有办法打印多个变量,比手动转换为字符串的费力方法更有效,然后在它们的连接上调用 putStrLn?

And*_*den 5

您可以使用mapM_,printputStr.show:

Prelude> mapM_ print [a, b]
9
10

mapM_ (putStr . show) [a, b]
910Prelude>
Run Code Online (Sandbox Code Playgroud)

请参阅learn you a haskell 的输入输出部分

您可以获得空格和新行:

Prelude> let pylike_print ints = mapM_ (\x -> putStr $ (show x) ++ " ") ints >> putStr "\n"
Prelude> pylike_print [9, 10]
9 10
Run Code Online (Sandbox Code Playgroud)