我有一些Haskell的函数,需要打印每周的销售额,每个销售额都应该显示在新的一行。但是它并不像我期望的那样工作。我的问题在于换行符 '\n'。
代码:
printWeeks :: Int->String
printWeeks 0 = printWeek 0
printWeeks x = printWeeks(x-1) ++ printWeek x
printWeek :: Int->String
printWeek x = show(x) ++ " " ++ stars (sales x) ++ "'\n'"
我尝试了许多方法,但换行符并没有按预期工作。 所有内容都打印在同一行上,这不是我想要的。
需要帮助吗?
谢谢
更新
以下内容由于编译错误而无法工作。 错误来自formatLines的第二行。 类型声明导致错误。 需要在这里寻求帮助。
formatLine :: (Name,Price)->IO()
formatLine (a,b) = putStrLn (a ++ dots ++ p)
where
x=(length a)
p=(formatPence b)
y=length p
z=lineLength-(x+y)
dots = printDots z
formatLines :: [(Name,Price)]->IO()
formatLines []= ""
formatLines (a:x) = formatLines x ++ formatLine a
"\n"
,它是一个只包含一个换行符的字符串;该字符串是列表['\n']
,其中包含的是'\n'
。你的字符串是['\'','\n','\'']
。 - applicative