【发布时间】:2014-03-04 02:06:04
【问题描述】:
我已经制作了一个相互依赖的数据类型树,如下所示。 PT 是“根”数据类型。有些函数应该将较低的数据类型组合到根。这样,为这些函数提供类型签名(a -> b -> ... -> PT),需要我包含大量信息以获取较低的数据类型(PTCmd CmdSub Hp ...)。这种数据类型树的下降是无关紧要的,我不想在结果中包含这些信息。
如果我在 PT 本身中定义所有较低的数据类型,则数据类型定义更难阅读。
除了向结果添加毫无价值的信息和一个庞大的数据类型定义之外,是否还有另一种(最好是不那么令人讨厌的)方法让我的函数产生根数据类型 PT?
data PT = PTCmd Command | PTVal V | PTCon C
deriving (Eq, Show)
data Command = CmdSub Sub | ...
deriving (Eq, Show)
data SubCommand = Hp V C | ...
deriving (Eq, Show)
【问题讨论】: