小编İdi*_*dil的帖子

Python 中的递归数据类型

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

6
推荐指数
1
解决办法
2146
查看次数