2016-12-29 5 views
1

pure 2と入力すると、GHCiで2が返されます。 pure "aa""aa"を返します。私はこの申請例がGHCiによって2つまたは「aa」のためにどのように解決されたのだろうか。Haskellで純粋な関数がどのように解決されるかの理解

+1

http://stackoverflow.com/a/28979021/3608068 – user3608068

+0

ありがとうございます@ user3608068。あなたが提供したリンクは私の質問に正確に答えますが、私がそれを探したときに私はそれを見つけることができませんでした。 –

答えて

6

GHCiは、ユーザーフレンドリーな魔法を実行します。

タイプが... => f aの式を入力すると、fからIOをインスタンス化しようとします。あなたの場合、IOは申請者(およびモナド)であるため、これが可能です。

第2に、形式が... => IO aのタイプが入力された場合は、IOアクションとして実行されます。

最後に、aがクラスShowの場合、結果が出力されます。あなたのケースでは、"aa"が結果です(タイプaStringです)ので、GHCiがそれを表示します。

+0

ありがとう、私は今悟りを感じる: –

関連する問題