哈斯克尔。如何在GHCi中测试BTree?

时间:2018-12-24 18:33:37

标签: haskell

我有此密码 来自二叉树的定义

data BTree a = Empty | Node a (BTree a) (BTree a)
deriving (Eq, Show, Read)

函数大小的定义

size' :: BTree a -> Integer
size' Empty = 0
size' (Node _ l r) = size' l + size' r + 1

我的理解是,我有一棵空树或一棵有一个节点和两个孩子的树。 正确吗?

Node a (BTree a) (BTree a) 

根据此定义,我只能有一个节点吗?

我正在对此进行测试

size' (BTree 2 (Node 3 empty) (Node 6 empty)) 
size' (BTree 5 (Node 3 empty) (Node 8 empty) empty)
size' (BTree 'A' (Node 'B' empty) (Node 'C' empty))
size' (Node 5 (BTree 3 empty) (BTree 8 empty) empty)
size' (Node 5 (BTree 3 empty) (BTree 8 empty))

但是所有这些都会导致错误

1 个答案:

答案 0 :(得分:3)

您的定义说,制作BTree a有两种方法:

  1. Empty
  2. Node x y z中,x的类型为a,而yz的类型为BTree a

所以BTree Int的一些示例是:

  1. Empty
  2. Node 0 Empty Empty
  3. Node 1 (Node 2 Empty Empty) Empty