你如何在Haskell中最好地定义一个有向无环图(DAG)(字符串)(有一个根)?
我特别需要尽快在这个数据结构上应用以下两个函数:
- 查找一个元素的所有(直接和间接)祖先(包括父母的父母等)。
- 找到一个元素的所有(直接)子元素。
我想到了[(String,[String])]
每一对是图形的一个元素,由它的名称 ( String
) 和一个字符串列表 ( )组成,[String]
其中包含该元素的(直接)父级的名称。这个实现的问题是很难完成第二个任务。
[(String,[String])]
当字符串列表 ( [String]
) 包含(直接)子项的名称时,您也可以再次使用。但是在这里,第一个任务很难完成。
我能做些什么?有哪些选择?哪种方式最有效?
编辑:还有一句话:我也希望它可以轻松定义。我必须自己“手动”定义这种数据类型的实例,所以我想避免不必要的重复。