編譯ch07 tempfile.hs,報錯如下。如何解決?
import System.IO
import System.Directory(getTemporaryDirectory, removeFile)
import System.IO.Error(catch)
import Control.Exception(finally)
tempfile.hs:4:24: error:
Module System.IO.Error does not export catch
|
4 | import System.IO.Error(catch)
| ^^^^^
uj5u.com熱心網友回復:
我認為您不必放棄閱讀 Real World Haskell。我認為您可以通過在
Hoogle 無法找到所有可能的結果,但它應該從維護最良好和最受歡迎的軟體包中找到結果。
每個結果下方的綠色文本行以小寫字母開頭的單詞是匯出此函式的包的名稱。這個base包是最基本的包之一,所以如果你的函式是在那里定義的,那么你應該選擇那個版本。您可以看到第一個結果就是這種情況。
綠線文本的其余部分是匯出函式的模塊。對于第一個結果是Control.Exception,Control.Exception.Base和GHC.IO。GHC如果可能的話,應該避免使用開頭的模塊,這些需要GHC編譯器的具體實作細節,這不是大問題,但也表明它可能不是標準模塊。此外,我建議選擇具有最少.' ' 的名稱,所以Control.Exception和 不Control.Exception.Base,因為這些是最通用的模塊。
您應該注意的另一件事是包含 name 的模塊Internal。在第二個結果下方的綠線中可以看到一個示例,即System.Directory.Internal.Prelude。這些模塊不能保證在包含它們的包的各個版本中都是穩定的,因此您也應該避免這些不穩定的模塊。
因此,在這種情況下,您可以選擇catch從Control.Exception. 為此,您只需洗掉該行System.IO.Error并將其添加catch到Control.Exception模塊的匯入串列中:
import Control.Exception(finally, catch)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/392568.html
標籤:哈斯克尔
上一篇:如何動態分配回圈資料?
