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

Python Haskell-打印多个非字符串变量,python,haskell,output,Python,Haskell,Output,我正在编写一个程序,从命令行读取两个整数,将它们加倍,然后将它们打印出来。所以我的程序读入Args,将它们转换为int,然后将它们加倍。我的问题是关于输出:在Python中,我可以写: >>a=9 >>b=10 >>打印a、b 9 10 这给了我令人满意的输出。在Haskell中,有一个类似的print语句来打印给定变量-例如 前奏曲>让a=10 Prelude>print a 10 我想知道是否有一个Haskell等价于pythonprint a,b,因此我可以一次打印多个变量。否则,我要做的

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

>>a=9

>>b=10

>>打印a、b

9 10

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

前奏曲>让a=10

Prelude>print a

10

我想知道是否有一个Haskell等价于python
print a,b
,因此我可以一次打印多个变量。否则,我要做的就是将双整数转换回字符串,然后写:
putStrLn(doubledint1+++++++++doubledint2)


有没有一种打印多个变量的方法比手动转换为字符串,然后在连接时调用putStrLn的费劲方法更有效?

您可以使用
show
将列表中的每个int转换为字符串,并使用
interlate
创建连接的字符串:

import Data.List

let ints = [9, 10]
print $ intercalate " " (map show ints)

正如@raymonad在评论中指出的,如果您不想引用输出字符串,您应该使用
putStrLn
而不是
print

您可以使用
mapM
,可以通过
print
putStr.show

Prelude> mapM_ print [a, b]
9
10

mapM_ (putStr . show) [a, b]
910Prelude>

您可以获得空格和新行:

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

或者,您可以使用
printf
:(从
Text.printf


然后您可能需要
putStrLn
(使用
print
您会得到一个带引号的字符串)。要使用插入,我需要导入什么?除了
interlate”“
之外,您还可以使用序言中的
unwords
。如果a和b是不同的类型,这具有工作的优势。
printf "%d %d" a b