首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Haskell相互依赖的数据类型树美学

Haskell相互依赖的数据类型树美学
EN

Stack Overflow用户
提问于 2014-03-03 15:30:12
回答 2查看 86关注 0票数 0

我创建了一个相互依赖的数据类型树,如下所示。PT是“root”-数据类型。有一些函数应该将较低的数据类型组合到根。这样,为这些函数提供类型签名(a -> b -> ... -> PT),需要我包含大量信息以获得更低的数据类型(PTCmd CmdSub Hp ...)。这种数据类型树的下降是无关紧要的,我不想在结果中包含此信息。

如果我在PT本身中定义所有较低的数据类型,则数据类型定义更难阅读。

除了向结果中添加毫无价值的信息和一个庞大的数据类型定义之外,是否还有另一种方法可以将我的函数转换为根数据类型PT?

代码语言:javascript
运行
AI代码解释
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2014-03-03 17:35:33

也许您可以定义一些“智能构造函数”;例如:

代码语言:javascript
运行
AI代码解释
复制
cmdSub = PTCmd . CmdSub
hp = cmdSub . Hp
票数 1
EN

Stack Overflow用户

发布于 2014-03-03 18:06:05

如果你能负担得起使用GHC7.8,那么你应该看看PatternSynonyms扩展,因为它很好地解决了你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22150717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档