2017-03-16 99 views
0

試圖編譯我的哈斯克爾代碼曖昧接口

Main.hs:11:1: error: 
    Ambiguous interface for ‘Data.Matrix’: 
     it was found in multiple packages: matrices-0.4.4 matrix-0.3.5.0 

我該如何解決這個問題時,我收到以下錯誤。我不能使用隱藏,因爲它是整個界面不明確。

+1

導致此錯誤的代碼究竟是什麼?如果您沒有完全描述,我們無法解決您的問題。 – AJFarmar

回答

4

使用the PackageImports language extension,你可以有資格進口與特定的包:

{-# LANGUAGE PackageImports #-} 
import "matrix" Data.Matrix 

然而,隨着文件表明,它並不總是一個好主意。還有其他方法可以解決這個問題,包括renaming modules from particular packages using GHC flags。例如,你可以改變從matrixData.Matrix到一個不同的名稱與以下GHC選項:

-package "matrix (Data.Matrix as Data.OtherMatrix)" 

您可以選擇,最適合您根據具體情況和您需要的選項。

+1

有一個更簡單的解決方案,我認爲值得一提:使用'.cabal'文件,並且不依賴於矩陣和矩陣。在單個應用程序/庫中確實需要這兩個軟件包似乎不太可能。 –

+0

@DanielWagner我考慮過提及這一點,但我認爲OP需要兩個軟件包,所以這不是一個選項。不過,通常情況下,通常只有其中一個軟件包可見,從而解決了模糊問題。 –