0

私は、次のデータ型を使用してバイナリ検索ツリーを作成するためのガイドに従ってきました:Haskell - 再帰を使用する代数データ型ですか?

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

私はすなわち、「ツリーノード」は、再帰を使用していると言ってに修正AMは、独自のデータ型「(の2つの要素を作成しますBinarySearchTree a)(BinarySearchTree a) '?

私はこのようなデータ型を見たことがない、簡単な説明は素晴らしいだろう!

+1

リストタイプ(これは再帰的でもあります)と非常に似ていますが、1回ではなく2回繰り返される点が異なります(リスト内のセルには1つのテールしかありません) 。 – chi

+0

技術的には、 'TreeNode' *は2つの' BinarySearchTree'値( 'a'値)を取り、*新しい' BinarySearchTree'値を返します。 *型*は再帰的に定義されます。 – chepner

+0

TreeNodeは*何も作成しません。 – immibis

答えて

5

はい、これは再帰的なデータ型です。

Learn You A Haskell For Great Goodの関連する章をお勧めします。とても初心者です。それはあまりにも、あなたの正確なケースについて説明します。

ここで私たちが言うつもりだ何だ:ツリーは空の木であるか、それはいくつかの値と2つのツリーが含まれてい 要素です。代数的データ型のための完全な適合のような のように聞こえる!

関連する問題