2017-02-21 22 views
1

我不知道如何同時導入兩個不同的模塊。下面的代碼如何提及不同的模塊

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. 

map (\(k,a) -> (k,[a]))我試圖從默認的前奏模塊使用它。我試過Data.List.map (\(k,a) -> (k,[a])),但仍然出現錯誤。儘管如此,它仍然是GHCi命令。在此先感謝

+0

'map'和'Data.List.map'是相同的。 –

+0

是的,我讀過,請問爲什麼我會收到錯誤信息? – Srinivas

+0

編譯器抱怨類型簽名'(Ord k)=> [(k,a)] - > Map k [a]' - 類型'Map'只能導入限定,因此您必須編寫Map.Map '(就像你在其他類型中那樣)。 – user2407038

回答

2

要導入Data.Map資格截至Map,而是試圖指Map數據類型沒有資格。

您需要更改Map k [a]的類型簽名phoneBookFromWithListMap.Map k [a]才能正確引用Map數據類型。

+0

感謝您的幫助。我對這個錯誤信息感到困惑。 – Srinivas

相關問題