这是我的代码:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
但是我得到了错误:
无法匹配期望的类型`[Char]'实际类型为“整数'
”
如何将i
转换为char?
答案 0 :(得分:13)
使用show
将数字转换为字符串:
func :: Integer -> String
func i = "LoadC R" ++ show i ++ "\n"
show
适用于很多事情(但不是全部)。
要实际打印这个,你需要做
main = putStr (func 5)
或者如果您正在使用ghci(我建议您在编写代码时使用 lot ,在编写代码后立即对其进行测试),您只需编写
putStr (func 5)
它会起作用。 (我将在下面解释原因。)
如果您使用putStrLn
代替putStr
,则会在结尾处添加额外的换行符。
如果您想在打印的内容中添加新行,请将\n
放在任意位置。
func2 :: Integer -> String
func2 i = "\nLoadC \nR\n" ++ show i ++ "\n"
里面有很多新行。
为什么putStr
将\n
转换为换行符?好吧,putStr
和putStrLn
的类型为String -> IO ()
,这意味着他们将所提供的字符串转换为将其置于屏幕上的IO程序。在ghci中,如果你给它类型为IO ()
的东西,它就会这样做。如果你给它一些其他类型的东西它会show
它然后putStr
那个。这意味着如果您键入
"Hello\nMum"
它与
具有相同的效果putStrLn (show "Hello\nMum")
如果您希望\n
成为换行符,则需要执行
putStrLn "Hello\nMum"
在将ghci放到屏幕上之前将其从show
停止。 (如果你发现自己做了很多putStr (show x)
,那就有一条捷径:print x
。)