Haskell-使用递归的代数数据类型?
我遵循了创建使用以下数据类型的二进制搜索树的指南:Haskell-使用递归的代数数据类型?,haskell,types,algebraic-data-types,recursive-datastructures,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),对吗 我从未见过这样的数据类型,任何简短的解释都会很棒 是的,这是一
data BinarySearchTree a = EmptyTree | TreeNode a (BinarySearchTree a) (BinarySearchTree a) deriving (Show, Read, Eq)
我说“TreeNode”使用递归,即创建2个自己数据类型的元素(BinarySearchTree a)(BinarySearchTree a),对吗
我从未见过这样的数据类型,任何简短的解释都会很棒 是的,这是一种递归数据类型 我推荐中的相关章节-它对初学者非常友好。它也描述了您的具体情况: 我们要说的是:一棵树要么是空的,要么是空的 包含一些值和两棵树的元素。听起来像是 非常适合代数数据类型
是的,这是一种递归数据类型 我推荐中的相关章节-它对初学者非常友好。它也描述了您的具体情况: 我们要说的是:一棵树要么是空的,要么是空的 包含一些值和两棵树的元素。听起来像是 非常适合代数数据类型
它与列表类型(也是递归的)非常相似,只是它递归两次(树中一个节点的两个分支)而不是一次(在列表中,一个单元格只有一个尾部)。从技术上讲,
TreeNode
接受两个BinarySearchTree
值(和一个a
值)并返回一个新的BinarySearchTree
值。该类型是递归定义的。TreeNode不创建任何内容。它与列表类型(也是递归的)非常相似,只是它递归两次(树中节点的两个分支),而不是一次(在列表中,单元格只有一个尾部)。从技术上讲,TreeNode
接受两个BinarySearchTree
值(和a
值)并返回新的BinarySearchTree
值。该类型是递归定义的。TreeNode不创建任何内容。