【发布时间】:2012-09-24 01:10:38
【问题描述】:
在项目中,我有几种不同的类型,定义在不同的模块中,每个都有相关的功能(功能名称相同,含义非常相似,所以以下有意义)。现在我想创建一个列表,其中可以(同时)拥有所有这些类型的实例。我能想到的唯一可能是这样的:
data Common = A{...} | B{...} | ...
但这意味着将定义保存在一个地方,而不是在不同的模块中(对于 A、B、...)。有没有更好的方法来做到这一点?
UPD
我对 haskell 比较陌生,并且编写了一些与我的学习相关的程序。在这种情况下,我有不同的FormalLanguage 定义方法:FiniteAutomata、Grammars 等等。它们中的每一个都有共同的功能(isAccepted、representation、...),所以有一个列表似乎合乎逻辑,其中元素可以是这些类型中的任何一种。
【问题讨论】:
-
如果您的定义过于复杂以至于占用了整个文件,您应该考虑降低它们的复杂性,而不是在 Haskell 中镜像该架构。您能否举例说明您要建模的具体内容?
-
我对haskell比较陌生,写了一些与我的学习相关的程序。在这种情况下,我有不同的
FormalLanguage定义方法:FiniteAutomata、Grammars等等。它们中的每一个都有共同的方法,因此有一个列表似乎合乎逻辑,其中元素可以是这些类型中的任何一种。