gpt4 book ai didi

haskell - 在 Haskell 中移动到新行 - 更新

转载 作者:行者123 更新时间:2023-12-01 10:11:35 24 4
gpt4 key购买 nike

我在 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" 将换行符附加到输出;您当前的代码将添加一个 ',然后是一个换行符,然后是另一个 '

正如@marcog 指出的那样,一定要使用 putStr 将其打印出来(或者根本不附加换行符并使用 putStrLn)。示例:

Hugs> putStr (show 4 ++ "\n")
4

Hugs> putStrLn (show 4 ++ "\n")
4


Hugs> print (show 4 ++ "\n")
"4\n"

(请注意,Hugs 解释器会在每个输出后添加额外的换行符。)

关于haskell - 在 Haskell 中移动到新行 - 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com