【问题标题】:Haskell how to append integer like ".. ++ Integer ++ ..."Haskell如何附加整数,如“.. ++ Integer ++ ...”
【发布时间】:2012-10-27 20:33:06
【问题描述】:

这是我的代码:

func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"

但我得到了错误:

无法将预期类型“[Char]”与实际类型“整数”匹配

如何将i 转换为字符?

【问题讨论】:

  • 使用show"LoadC R" ++ show i ++ "\n"
  • 谢谢,它有效!但是如何打印新行?

标签: haskell append type-conversion


【解决方案1】:

使用show将数字转为字符串:

func :: Integer -> String
func i = "LoadC R" ++ show i ++ "\n"

show 可以处理很多事情(但不是全部)。 要实际打印这个,你需要这样做

main = putStr (func 5)

或者如果您使用的是 ghci(我建议您在编写代码时使用 lot,在编写代码后立即测试所有内容),您可以编写 p>

putStr (func 5)

它会起作用的。 (我将在下面解释原因。)

如果您使用putStrLn 而不是putStr,它会在末尾添加一个额外的换行符。 如果您想在打印的内容中添加一个新行,请将\n 放在您喜欢的任何位置。

func2 :: Integer -> String
func2 i = "\nLoadC \nR\n" ++ show i ++ "\n"

里面有很多换行符。

为什么putStr\n 变成换行符?好吧,putStrputStrLn 具有String -> IO () 类型,这意味着它们将给定的字符串转换为将其显示在屏幕上的IO 程序。在 ghci 中,如果你给它一些 IO () 类型的东西,它会做到的。如果你给它其他类型的东西,它会show 它然后putStr 那。这意味着如果你输入

"Hello\nMum"

效果和

一样
putStrLn (show "Hello\nMum")

而如果您希望 \n 成为换行符,则需要这样做

putStrLn "Hello\nMum"

在将 ghci 放到屏幕上之前停止 showing 它。 (如果你发现自己做了很多putStr (show x),有一个捷径:print x。)

【讨论】:

  • 谢谢。我通过“func 5”运行程序。如何打印新行?
  • @user1510412 希望新的编辑能更好地为您解释。
猜你喜欢
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
相关资源
最近更新 更多