我必须创建一个二叉搜索树,一个名为 Person 的数据类型,并且基本上将每个人插入到树中。问题是插入方法有一个优先类型,它在下面的代码中定义:
class Priorities a where
priority :: a -> Int
instance Priorities a where
priority :: a -> Int
树的每个节点都是一个列表,并且插入是根据 Priorities 类中的优先级编号完成的,每个人都被赋予(在我的代码中,这个函数称为 insertTree)。
这是我到目前为止所做的事情:
data Tree => Tree a = EmptyTree
| Node a (Tree [a]) (Tree [a]) deriving (Show, Read, Eq)
data Person = Person { name :: a
, age :: a
, handicapped :: a
} deriving (Eq)
这是我需要帮助的地方,因为我不知道如何进行此插入。我的意思是,我开始没问题,但是当我到达需要使用优先级值的部分时,我会感到困惑,以便知道我将在哪个节点(这是一个列表)中插入数据。
insertTree :: (Ord a) => Priorities priority -> Tree a -> a -> Tree a
insertTree x EmptyTree x = Node x EmptyTree EmptyTree
insertTree x (Node a left right) y
|x == = Node y left right
|x
我想问你的另一件事是,我怎样才能使数据类型 People 成为 Priorities 类的实例。