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

时间:2013-12-18 22:35:22

标签: 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 print a,b的Haskell,所以我可以一次打印多个变量。否则,我必须做的是将doublednt转换回字符串,然后写:
putStrLn (doubledint1 ++ " " ++ doubledint2)

有没有办法打印多个变量,这些变量比手动转换为字符串的繁琐方法更有效,然后在串联上调用putStrLn?

3 个答案:

答案 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
相关问题