String func i = "LoadC R" ++ i ++ "\n" 但我收到错误: Couldn't match expected ty-6ren">
gpt4 book ai didi

Haskell如何 append 整数,如 "..++ Integer++ ..."

转载 作者:行者123 更新时间:2023-12-02 14:27:43 24 4
gpt4 key购买 nike

这是我的代码:

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

但我收到错误:

Couldn't match expected type `[Char]' with actual type `Integer'

如何将 i 转换为 char?

最佳答案

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

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

show 适用于很多事情(但不是全部)。要实际打印此内容,您需要执行

main = putStr (func 5)

或者,如果您正在使用 ghci(我建议您在编写代码时使用很多,编写代码后立即测试所有内容),您可以直接编写

putStr (func 5)

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

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

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

其中有很多换行符。

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

"Hello\nMum"

效果与

相同
putStrLn (show "Hello\nMum")

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

putStrLn "Hello\nMum"

在将其显示在屏幕上之前阻止 ghci 显示它。 (如果您发现自己执行了大量 putStr (show x),有一个快捷方式:print x。)

关于Haskell如何 append 整数,如 "..++ Integer++ ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13103953/

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