我正在编写一个程序,它从命令行读取两个整数,将它们加倍,然后将它们打印出来。所以我的程序读入Args,将它们转换为Ints,然后将它们加倍。我的问题是关于输出:在Python中,我可以写:
>>>a = 9
>>>b = 10
>>>print a,b
9 10
给了我满意的输出。在Haskell中,有一个类似的print
语句来打印给定的变量 - 例如
Prelude> let a = 10
Prelude> print a
10
我想知道是否有一个等效于python print a,b
的Haskell,所以我可以一次打印多个变量。否则,我必须做的是将doublednt转换回字符串,然后写:
putStrLn (doubledint1 ++ " " ++ doubledint2)
有没有办法打印多个变量,这些变量比手动转换为字符串的繁琐方法更有效,然后在串联上调用putStrLn?
答案 0 :(得分:4)
您可以mapM_
或print
使用putStr.show
:
Prelude> mapM_ print [a, b]
9
10
mapM_ (putStr . show) [a, b]
910Prelude>
请参阅input-output section of learn you a haskell。
您可以获得空格和新行:
Prelude> let pylike_print ints = mapM_ (\x -> putStr $ (show x) ++ " ") ints >> putStr "\n"
Prelude> pylike_print [9, 10]
9 10
答案 1 :(得分:2)
您可以使用show
将列表中的每个int转换为字符串,并使用intercalate
创建连接字符串:
import Data.List
let ints = [9, 10]
print $ intercalate " " (map show ints)
正如@raymonad在评论中指出的那样,如果您不希望引用输出字符串,则应使用putStrLn
而不是print
。
答案 2 :(得分:1)
或者,您可以使用printf
:(来自Text.Printf
)
printf "%d %d" a b