Haskell没有类型同义词的数据构造函数

时间:2016-03-25 11:59:32

标签: haskell types

我已经定义了一个带有构造函数的haskell数据类型和它的类型同义词。我无法使用它的数据构造函数。

类型定义:

module BinaryTreeModule(BinaryTree,..) where
data BinaryTree a = Empty | Node (BinaryTree a) a (BinaryTree a)

输入同义词:

import BinaryTreeModule(BinaryTree)
type BST = BinaryTree

用法:

insert :: a -> BST a -> BST a
insert _ Empty = ...
insert _ Node .. = ...

我收到一条错误,指出找不到Empty和Node构造函数。

我还在不同的文件中定义了它们。如果BST只是BinaryTree的同义词,那么它们的构造函数不应该相同吗?

还有更好的方法将BinaryTree类型“继承”到不同类型吗?类型类型在这里是正确的解决方案吗?

编辑:添加了我在文件之间导入的方式

1 个答案:

答案 0 :(得分:2)

在@ Carsten的评论之后,我意识到我没有从模块中导入构造函数

import BinaryTreeModule(BinaryTree(Empty,Node))  解决了问题