Haskell 如何将可折叠类导入模块?

Haskell 如何将可折叠类导入模块?,haskell,Haskell,以下导入语句导致与foldr等人发生冲突。因为第一条导入语句似乎将Data.Foldable中的所有函数导入到my module中: import Data.Foldable (Foldable (..)) import qualified Data.Foldable as Foldable (foldr, foldl, foldr1, foldl1, foldMap) 这个导入语句似乎有效。但是,可折叠类现在是可折叠的。可折叠: import qualified Data.Foldable

以下导入语句导致与foldr等人发生冲突。因为第一条导入语句似乎将Data.Foldable中的所有函数导入到my module中:

import Data.Foldable (Foldable (..))
import qualified Data.Foldable as Foldable (foldr, foldl, foldr1, foldl1, foldMap)
这个导入语句似乎有效。但是,可折叠类现在是可折叠的。可折叠:

import qualified Data.Foldable as Foldable (Foldable (..), foldr, foldl, foldr1, foldl1, foldMap)

您必须在序曲模块中隐藏foldr

import Prelude hiding (foldr)

foldr
等是
Foldable
的类方法,因此它们是通过导入Data.Foldable(Foldable(..)在第一个变体中导入的。 要仅导入非限定类,而不是其方法,请使用

import Data.Foldable (Foldable)
import qualified Data.Foldable as Foldable
谢谢我过去认为(…)是理所当然的。现在我找到了尊重它的理由。:-)