Haskell 如何提及不同的模块

Haskell 如何提及不同的模块,haskell,Haskell,我不知道如何同时导入两个不同的模块。下面的代码 import qualified Data.Map as Map import Data.List phoneBookToList :: (Ord k) => [(k,String)] -> Map.Map k String phoneBookToList xs = Map.fromListWith (\n1 n2 -> n1 ++ ", " ++ n2) xs phoneBookFromWithList :: (Ord k

我不知道如何同时导入两个不同的模块。下面的代码

import qualified Data.Map as Map 
import Data.List

phoneBookToList :: (Ord k) => [(k,String)] -> Map.Map k String
phoneBookToList xs = Map.fromListWith (\n1 n2 -> n1 ++ ", " ++ n2) xs

phoneBookFromWithList :: (Ord k) => [(k,a)] -> Map k [a]
phoneBookFromWithList = Map.fromListWith (++)  $ map (\(k,a) -> (k,[a]))
抛出此错误

Not in scope: type constructor or class `Map'
Perhaps you meant `Map.Map' (imported from Data.Map)
Failed, modules loaded: none.

映射(\(k,a)->(k,[a])
我试图从默认的前奏曲模块使用它。我尝试了
Data.List.map(\(k,a)->(k,[a]))
,但仍然得到一个错误。不过,它的措辞类似于GHCi命令。提前感谢

您正在导入
数据。Map
被限定为
Map
,但尝试引用
Map
数据类型而没有限定


您需要将
phoneBook的类型签名中的
Map k[a]
从WithList更改为
Map.Map k[a]
,以便正确引用
Map
数据类型。

Map
data.List.Map
是相同的。是的,我读到了,你能告诉我为什么会出错吗?编译器正在抱怨类型签名
(Ord k)=>[(k,a)]->Map k[a]
-类型
Map
只导入了合格的代码,因此你必须编写
Map.Map
(就像你在其他类型中所做的那样)。谢谢你的帮助。我被错误信息弄糊涂了。