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