外部模块可用于Haskell中的库

时间:2013-08-06 18:09:18

标签: haskell types typeclass algebraic-data-types

这将是一个非常不寻常的问题,但我正在以一种非常特殊的方式生成Haskell代码,所以我知道我想要做的事情可能听起来像一个反模式。

让我们说:

  1. 我们有图书馆LALB
  2. 图书馆LA包含模块A,图书馆LB包含模块B
  3. 每个模块定义DataType(分别为DADB
  4. 我们有某处模块X,其中包含TypeClass TX
  5. 定义
  6. DADB都是TX
  7. 的实例

    我在单独的步骤中生成LALB并且他们彼此不了解,因此模块X不能成为其中任何一个的一部分。 (DADB只是共享TX)中定义的常用函数。

    我想问你是否可以将模块X与库LALB分开?

    我是否必须使X单独的库(LX),或者有办法告诉Haskell DADB只是的实例相同 TypeClass X

    创建一个单独的X库(只包含一个TypeClass对我来说似乎有些过分,但在这种情况下,可能没有更好的解决方案。)

1 个答案:

答案 0 :(得分:1)

您需要创建单独的库。如果LALB都定义了包含M的模块X,则"library-a" M.X将不等于"library-b" M.X,您将获得导入错误如果你尝试导入它们(vanilla Haskell没有做任何特殊处理命名空间冲突的事情)。