我一直在查看以前提出的问题,但找不到解决我问题的答案,尽管我认为其中至少有一个会。我只是想在函数内的字符串之间添加一个换行符。每当我向字符串添加“\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 个空格,忽略我的格式。我主要是想让换行符工作)。谢谢你。

最佳答案

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



长话短说,您可能想要使用 putStr,因为 Haskell 将默认在该字符串上使用 show,这将像这里为您所做的那样清楚地显示 \n

例子:

import Data.List

main = putStrLn(aRow 4)

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

10-08 15:38