사용자 지정 데이터 형식의 이진 검색 트리를 만들고 싶습니다. 책에는 이름과 페이지의 두 가지 속성이 있습니다. 속성 페이지를 트리의 노드로 사용하고 싶습니다. 나는 나무를 정의하는 데에 갇혀있다. 누구든지 자원으로 저를 도울 수 있습니까? 시도한 코드는 다음과 같습니다 (작동하지 않습니다).사용자 지정 데이터가 포함 된 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' 만 남기길 원합니까? 아니면 어떤 타입이라도 갖고 싶습니까? 바로 지금, 당신은 어딘가에 있습니다. – pat