在没有括号的Haskell中输出列表,并在一个范围内输出?

时间:2015-05-20 14:32:19

标签: list haskell

我有一个返回列表的函数,称之为f n

如果我打印列表,它看起来像[1,2,3,4],而我希望它看起来像1 2 3 4

另外,我想要输出n范围内的多个列表,第一行为f 1,第二行为f 2,... f n为第n行。

我的f n功能正常工作但无法让输出在我的生活中发挥作用。

目前的尝试:

main = do
    n <- readLn :: IO Int
    mapM_ putStrLn [f i | i <- [1..n]]

1 个答案:

答案 0 :(得分:7)

您可以执行类似

的操作
list_to_string = unwords . map show

获取所需的输出格式。然后而不是做

print [1, 2, 3, 4]

你可以做到

putStrLn $ list_to_string $ [1, 2, 3, 4]

应该显示你想要的方式。

编辑:至于打印范围,请尝试以下操作:

main = do
  n <- readLn :: IO Int
  mapM_ (putStrLn . list_to_string) [ f i | i <- [1..n] ]