文字列内に改行を作成するにはどうすればよいですか? IO ()
を使用せずに可能ですか?
formatRow :: Car -> String
formatRow (a, d:ds, c, x:xs) = a ++ " | " ++ x ++ concat xs ++ " | " ++ show c ++ " | " ++ d ++ concat ds ++ (show '\n')
改行を含む文字列を作成するには、単に"\n"
と書きます。
Windowsでプログラムを実行すると、 自動的に変換されます から"\r\n"
になります。
show
を呼び出すと改行(またはその他のメタ文字)がエスケープされるため、foo ++ (show "\n")
またはfoo ++ (show '\n')
を実行しないでください。foo ++ "\n"
を使用してください。
また、putStr
またはputStrLn
を使用せずにGHCiで文字列式を評価する場合、その上でshow
を呼び出すだけなので、たとえば、文字列"foo\n"
は次のように表示されます。 GHCiの"foo\n"
ですが、putStr
を使用して出力すると、改行を含む文字列であり、そのように出力されるという事実は変わりません。