web-dev-qa-db-ja.com

Haskell Stringの改行?

文字列内に改行を作成するにはどうすればよいですか? IO ()を使用せずに可能ですか?

formatRow :: Car -> String
formatRow (a, d:ds, c, x:xs) = a ++ " | " ++ x ++ concat xs ++ " | " ++ show c ++ " | " ++ d ++ concat ds ++ (show '\n')
31
Ash

改行を含む文字列を作成するには、単に"\n"と書きます。

Windowsでプログラムを実行すると、 自動的に変換されます から"\r\n"になります。

showを呼び出すと改行(またはその他のメタ文字)がエスケープされるため、foo ++ (show "\n")またはfoo ++ (show '\n')を実行しないでください。foo ++ "\n"を使用してください。

また、putStrまたはputStrLnを使用せずにGHCiで文字列式を評価する場合、その上でshowを呼び出すだけなので、たとえば、文字列"foo\n"は次のように表示されます。 GHCiの"foo\n"ですが、putStrを使用して出力すると、改行を含む文字列であり、そのように出力されるという事実は変わりません。

57
sepp2k