【发布时间】:2021-04-22 10:02:27
【问题描述】:
Data.Tree 使用列表来表示以特定节点为根的子树。是否可以有两种树类型,例如一种使用列表,另一种使用向量?我希望能够编写不关心子树如何具体表示的函数,只关心子树是可遍历的,以及利用特定子树类型的函数,例如快速索引向量。
似乎类型族将是这项工作的正确工具,尽管我以前从未使用过它们,而且我不知道如何实际定义正确的族。
如果重要的话,我没有使用容器库树实例,而是使用类型
data Tree a b = Node a b [Tree a b] deriving (Show, Foldable, Generic)
和
data MassivTree a b = V a b (Array B Ix1 (MassivTree a b))
后者使用来自massiv的向量。
【问题讨论】:
-
查看
Cofree数据类型;Cofree f a = a :< f (Cofree f a)
标签: haskell tree type-families traversable