隐藏导入

Prelude 通常定义其名称在别处使用的函数。不隐藏此类导入(或使用发生冲突的合格导入)将导致编译错误。

Data.Stream 定义了名为 mapheadtail 的函数,它们通常与 Prelude 中定义的函数冲突。我们可以使用 hiding 隐藏 Prelude 中的那些导入:

import Data.Stream -- everything from Data.Stream
import Prelude hiding (map, head, tail, scan, foldl, foldr, filter, dropWhile, take) -- etc

实际上,需要太多的代码来隐藏这样的 Prelude 冲突,所以你实际上会使用 qualified 导入 Data.Stream 代替。