我有一堆类型,它们的层次结构存储了一些有用的信息。我试图避免在操作它们的函数中嵌入类型层次结构的知识。
以下是斯坦福自然语言处理中的Typed Dependencies的摘录:
root - root
dep - dependent
aux - auxiliary
auxpass - passive auxiliary
cop - copula
arg - argument
agent - agent
我希望创建一些数据类型,以反映此结构,以便我可以定义一些仅能在特定类型上操作的函数。当我有一个操作
arg
的函数时,用于表示arg
的类型还应包含agent
,但表示agent
的类型不应包含arg
。表示dep
的类型应包括其下面的所有内容。在Haskell中是否可能实现这一点?我一直在尝试声明不同的
data
类型来模拟它,但由于一个数据类型不能使用另一个数据类型的构造函数,因此我无法让它起作用。我怀疑这种方法在Haskell中可能不太可行,如果是这种情况,那么通常如何处理这些情况,其中压平层次结构绝对不可取?
Agent
字段的Arg
数据类型。那样是否足够? - danidiazdep
的成员还具有额外的关系字段。重要的是,类型本身传达了有关关系上下文的一些有用信息。随着您向下遍历层次结构,上下文变得更加具体。 - Isaac