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?
您可以使用mapM_,print或putStr.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)