如何处理Haskell Prelude命名空间冲突?

时间:2018-01-11 00:09:25

标签: haskell

如果我想使用readFile中的Data.Text.IO,但Prelude中已经有readFile,我该如何导入它,以便它不会出现这种情况。导致歧义错误?

我有一个脚本只是说import Data.Text.IO然后使用readFile,我在ghci使用:load对其进行测试,但它抱怨模糊函数调用。

2 个答案:

答案 0 :(得分:6)

有两种解决方案。

import qualified Data.Text.IO as T

这会为Data.Text.IO功能提供T.readFile。但是,如果您只打算使用Data.Text.IO版本而不使用Prelude版本,则可以排除Prelude版本。

import Prelude hiding (readFile)
import Data.Text.IO

显式import Prelude将覆盖Prelude的默认导入,您可以控制导入哪些名称。

答案 1 :(得分:2)

import qualified Data.Text.IO as DTIO,然后您可以使用DTIO.readfile

有关详细信息,请参阅https://wiki.haskell.org/Import