Python 中最接近 Haskell 中的递归数据类型的是什么?(即在定义自身时使用类型自己的定义。)
编辑:
为了给出递归类型的更具体的定义,下面是 Haskell 中的二叉树:
data Tree a = Leaf a | Branch (Tree a) (Tree a)
Run Code Online (Sandbox Code Playgroud)
我的阅读方式如下:二叉树可以是叶子,也可以包含两个子树,这两个子树又是类型树本身。
有关Haskell中递归类型的更多信息,可以参考这里: https: //www.haskell.org/tutorial/goodies.html
我实际上想到的是将 Haskell 中的单词树定义转换为 Python。WordTree这是我的一个旧项目中的定义:
data WordTree = Word String | Subword String [WordTree] | Root [WordTree]
Run Code Online (Sandbox Code Playgroud)
AWordTree是一个 n 叉树结构,其中单词的公共前缀存储在双亲中,其余部分以排序的方式存储在树的叶子中。我相信这种类型定义有点类似于 Trie。然而,由于 Haskell 是一种函数式编程语言,它允许这种类型定义是递归的。Python 中(或者一般来说,在面向对象的编程中)对于这种类型的定义最接近的可能是什么?
python haskell type-hinting recursive-datastructures algebraic-data-types