2016-12-29 63 views
1

在GHCi中,當我鍵入pure 2時,它返回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是一個應用(和monad)。其次,當輸入表達式爲... => IO a的表達式時,它作爲IO動作運行。

最後,如果a屬於Show類,則打印結果。在你的情況下,"aa"是結果(並且類型aString),所以GHCi打印該結果。

+0

謝謝齊先生,我現在開悟了:) –