2014-03-28 46 views
3

我在抓住Haskell的模块系统时遇到了问题。看起来import语句确实将模块的符号导入到本地命名空间中。现在我有两个模块定义运算符(<>)Numeric.LinearAlgebra.<>HLearn.Algebra.<>)的问题,而这些模块又在其他Haskell名称空间中定义。Haskell命名空间碰撞

  • 你将如何处理这个问题?我还没有看到其他的代码比import ...导入一个模块在Haskell

回答

6

如果您需要在同一模块中使用这两个运营商,你可以使用合格的进口:

import qualified Numeric.LinearAlgebra as N 
import qualified HLearn.Algebra as H 

然后你可以使用你需要L.<>N.<>

如果你不会使用的功能之一,只是将其隐藏:

import Numeric.LinearAlgebra hiding ((<>)) 
2

隐藏的功能你不想:

import Numeric.LinearAlgebra hiding ((<>))