Haskell的新行

时间:2017-03-26 17:35:39

标签: haskell functional-programming newline

我一直在查看之前提出的问题,但我无法找到解决问题的答案,尽管我认为其中至少有一个会这样。我只是想在函数内部的字符串之间添加一个换行符。每当我添加一个" \ n"对于一个字符串,它只是打印" \ n"

import Data.List
-- aRow takes number of columns as argument
-- The idea is to use this function with the number of columns as argument.
-- Example, if we want 3 columns, we'd say aRow 3, and get "+---+---+---+"

aRow :: Int -> String
aRow n = "+" ++ take (4*n) (intercalate "" (repeat "---+")) ++ "\n|" ++ take (4*n) (intercalate "" (repeat "   |"))

这是我得到的输出

"+---+---+---+---+\n|   |   |   |   |"

我更喜欢

"+---+---+---+---+" 
"|   |   |   |   |"

哪些线条在不同的线条上(并且在垂直条纹之间应该有3个空格,忽略我的格式。我主要尝试让换行符处于工作状态)。谢谢。

1 个答案:

答案 0 :(得分:4)

https://stackoverflow.com/a/5944062/1848654

  

如果您只是在不使用class exampleArrayAdapter extends ArrayAdapter<...> implements SectionIndexer putStr的情况下评估ghci中的字符串表达式,它只会在其上调用show,因此例如字符串putStrLn将显示为{{1在ghci中,但这并没有改变这样一个事实:它是一个包含换行符的字符串,一旦你用"foo\n"输出它就会以那种方式打印。

长话短说,你可能想要使用"foo\n",因为Haskell将默认在该字符串上使用putStr,这将显示putStr,就像它在这里为你所做的那样。

示例:

show