2

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

让我们说:

  1. 我们有图书馆LALB
  2. LA由模块组成A,库LB由模块组成B
  3. 每个模块定义DataType(分别DADB
  4. 我们有一个模块X它只包含定义TypeClass TX
  5. DA和都是DB_TX

我正在生成LALB在单独的步骤中,它们彼此不知道,因此该模块X不能成为其中任何一个的一部分。(DA并且DB简单地共享定义在 中的通用函数TX)。

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

我是否必须制作X单独的库 ( LX) 或者有一种方法可以告诉 HaskellDA并且DB只是相同 TypeClass X的实例。

制作一个单独的库X(只包含一个库TypeClass对我来说似乎有点过头了,但在这种情况下,不可能有更好的解决方案)。

4

1 回答 1

1

您需要制作单独的库。如果两者都LA定义LB了一个M包含Xthen的模块,那么如果你尝试导入它们,你"library-a" M.X"library-b" M.X得到导入错误(vanilla Haskell 没有做任何特殊的事情来处理命名空间冲突)。

于 2013-08-06T18:14:21.643 回答