これが私のコードです:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
しかし、私はエラーが発生しました:
予期されたタイプ`[Char]'を実際のタイプ`Integer'と一致させることができませんでした
i
charに変換するにはどうすればよいですか?
これが私のコードです:
func :: Integer -> String
func i = "LoadC R" ++ i ++ "\n"
しかし、私はエラーが発生しました:
予期されたタイプ`[Char]'を実際のタイプ`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
ええと、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
。)