我得到的模糊警告,有時錯誤,一直。這只是一個明確的例子。我使用的文檔測試:Haskell:處理模糊的進口
$ stack exec doctest -- src/Main.hs
<interactive>:6:14:
Ambiguous occurrence ‘stdout’
It could refer to either ‘Turtle.stdout’,
imported from ‘Turtle’ at src/Main.hs:6:1-13
(and originally defined in ‘Turtle.Prelude’)
or ‘System.IO.stdout’,
imported from ‘System.IO’
(and originally defined in ‘GHC.IO.Handle.FD’)
...
Examples: 2 Tried: 2 Errors: 0 Failures: 0
顯然,它的工作原理,至少暫時,但這些警告都是大部頭,討厭,而且很可能危險。
我試圖應付隱藏,像這樣(Main.hs,所有進口):
import Turtle
import Prelude hiding (FilePath)
import System.IO hiding (FilePath, stdout, stderr) -- trying to hide std...
import Text.Regex.TDFA
,但它沒有什麼區別。
是否有正確的一般方法?
[約翰Tibell問題推薦](https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md)爲「[a]總是使用顯式導入列表或合格導入標準和第三方庫」。 – Jubobs
包括Prelude或System.IO在內的所有標準庫是否真的適合顯式導入列表方法? –
@AlexeyOrlov IMO不是前奏 - 但是對於'System.IO'等,它甚至是一個很好的文檔 - 你的用戶可以看到他/她可能不知道的某些功能是從 – Carsten