web-dev-qa-db-ja.com

HaskellのprintとputStrLnの違い

私は混乱しています。私はprintを使用しようとしましたが、人々はputStrLnを適用することを知っています。それらの本当の違いは何ですか?

print $ function 
putStrLn $ function
47
Amir Nabaei

関数putStrLnStringを取り、それを画面に表示し、その後に改行文字(put a Str ingが続き、新しい[〜#〜] l [〜#〜] i n e)。

Stringsでのみ機能するため、一般的なイディオムは、任意のオブジェクトを取得してStringに変換し、putStrLnを適用して表示することです。オブジェクトをStringに変換する一般的な方法はshow関数を使用することであるため、コードは次のようになります。

putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))

一度気づいたら、Stringに変換して1ステップで文字列を表示する関数を定義するのはそれほど大きなことではありません

print x = putStrLn (show x)

これはprint関数とまったく同じです。

79
Chris Taylor