这将是一个非常不寻常的问题,但我正在以一种非常特殊的方式生成Haskell代码,所以我知道我想要做的事情可能听起来像一个反模式。
让我们说:
LA
和LB
LA
包含模块A
,图书馆LB
包含模块B
DataType
(分别为DA
和DB
)X
,其中包含TypeClass
TX
DA
和DB
都是TX
我在单独的步骤中生成LA
和LB
并且他们彼此不了解,因此模块X
不能成为其中任何一个的一部分。 (DA
和DB
只是共享TX
)中定义的常用函数。
我想问你是否可以将模块X
与库LA
和LB
分开?
我是否必须使X
单独的库(LX
),或者有办法告诉Haskell DA
和DB
只是的实例相同 TypeClass
X
。
创建一个单独的X
库(只包含一个TypeClass
对我来说似乎有些过分,但在这种情况下,可能没有更好的解决方案。)
答案 0 :(得分:1)
您需要创建单独的库。如果LA
和LB
都定义了包含M
的模块X
,则"library-a" M.X
将不等于"library-b" M.X
,您将获得导入错误如果你尝试导入它们(vanilla Haskell没有做任何特殊处理命名空间冲突的事情)。