新行

时间:2016-04-21 11:56:58

标签: haskell

我有以下函数,它接受一个数字作为参数,应该返回一个字符串。

fun n = unwords [foldl (\acc x -> acc ++ (unwords[show x] ++ " ")) "" [1..nr] ++ "\n"| nr <- [n, n - 1..0]]

5的返回值是:

fun 5
"1 2 3 4 5 \n 1 2 3 4 \n 1 2 3 \n 1 2 \n 1 \n \n"

 putStrLn $ fun 5
  1 2 3 4 5
 1 2 3 4
 1 2 3
 1 2
 1

我的问题是从行首开始的空格从哪里出现?我对该函数的预期结果是

fun 5
"1 2 3 4 5 \n1 2 3 4 \n1 2 3\n 1 2\n 1\n\n

1 个答案:

答案 0 :(得分:6)

该空间来自unwords的最外层用途,其documentation个州:

  

它与分隔空格连接。

如果您将unwords更改为concat,则会删除换行后的空格。