私は混乱しています。私はprint
を使用しようとしますが、私は人々がputStrLn
を適用することを知っています。彼らの本当の違いは何ですか?ハスケルのプリントとputStrLnの違い
print $ function
putStrLn $ function
私は混乱しています。私はprint
を使用しようとしますが、私は人々がputStrLn
を適用することを知っています。彼らの本当の違いは何ですか?ハスケルのプリントとputStrLnの違い
print $ function
putStrLn $ function
機能putStrLn
は改行文字に続いて、String
を取り、それを画面に表示する(新しいL私N電子続く筋力 INGを置きます)。
String
でのみ機能するため、一般的な表現はオブジェクトを取り込み、String
に変換してからputStrLn
を適用して表示することです。あなたはそれを変換する関数を定義するための非常に大きなストレッチではない、ということに気づくたら、あなたのコードが
putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))
の多くで終わるだろうのでString
にオブジェクトを変換する一般的な方法は、show
機能付きですString
へと一歩を正確にprint
機能があるものである
print x = putStrLn (show x)
に文字列を表示します。
'putStrLn'は"я "のような非ASCII文字を表示できますが、' print'は表示できません。私は本当に理由を知らない。 'putstrLn"я "' vs 'print"я "'を試してみてください。 – CMCDragonkai
@CMCDragonkai私が答えを出す理由です。 'print'関数は' show'の出力に 'putStrLn'を呼び出し、' show'関数はそれらを表示するために文字列をそれらのユニコード表現に変換します。 'я'(キリル文字 "ya")のユニコードポイントは、U + 044Fまたは10進数で1103です。これは、 'show"ò "' '' \ "1103 \" "を出力する理由です。 '' \ 1103 "(試してみてください)の7文字からなる文字列を取得するには、ghciを入力する必要があります。 –
一般的にテキストを扱うときに' putStrLn'を使用するほうがよいでしょうか? – CMCDragonkai
'print = putStrLn。 show' – Satvik
ghciに 'print 3'、' putStrLn 3'、 'print" three、 'putStrLn" three "'を実行しようとしましたか?これは本当に少しの実験で答えられる質問です。 –