Haskell - 使用递归的代数数据类型?

时间:2016-09-22 10:28:08

标签: haskell types algebraic-data-types recursive-datastructures

我已经按照指南创建了一个使用以下数据类型的二叉搜索树:

data BinarySearchTree a = EmptyTree | TreeNode a (BinarySearchTree a) (BinarySearchTree a) deriving (Show, Read, Eq)

我是否正确地说' TreeNode'正在使用递归,即创建自己的数据类型的2个元素'(BinarySearchTree a)(BinarySearchTree a)'?

我从未见过像这样的数据类型,任何简短的解释都会很棒!

1 个答案:

答案 0 :(得分:5)

是的,这是一种递归数据类型。

我推荐Learn You A Haskell For Great Good中的相关章节 - 它非常适合初学者。它也描述了您的确切情况:

  

这就是我们要说的:树是空树还是树   包含一些值和两棵树的元素。听起来像个   完全适合代数数据类型!