我已经定义了一个带有构造函数的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类型“继承”到不同类型吗?类型类型在这里是正确的解决方案吗?
编辑:添加了我在文件之间导入的方式
答案 0 :(得分:2)
在@ Carsten的评论之后,我意识到我没有从模块中导入构造函数
import BinaryTreeModule(BinaryTree(Empty,Node))
解决了问题