カスタムデータタイプブックのバイナリ検索ツリーを作成したいとします。ブックには、名前とページの2つの属性があります。ツリーのノードとして属性ページを使用したいと思います。私は木を定義することに固執しました。誰でもリソースを教えてくれますか?私が試したコードはここにあります(動作していません)カスタムデータを含むHaskellバイナリ検索ツリー
import System.IO
import Data.List
data Book = Book{
name:: String,
page::Int
}deriving (Show)
data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)
singleton :: (Book _ x) -> Tree x
singleton (Book _ x) = Node x EmptyTree EmptyTree
treeInsert :: (Ord a) => a -> Tree a -> Tree a
treeInsert (Book _ x) EmptyTree = singleton (Book _ x)
treeInsert (Book _ x) (Node a left right)
| x == a = Node x left right
| x < a = Node a (treeInsert (Book _ x) left) right
| x > a = Node a left (treeInsert (Book _ x) right)
ツリーの定義にどのように取り残されていますか?すでにツリーを定義しています。 –
あなたのタイプはオフです。 'Book'は型変数を取らず、' singleton'は 'Tree Int'を返します。 – Zeta
あなたの 'Tree'に' Book'sだけを保持したいのですか、それともそれを任意の型に保持しますか?今、あなたはどこかの間にいます。 – pat