我在名为Tree2.hs的文件中创建了一个Tree结构
module Tree2
(
Tree
) where
data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving (Show)
然后我导入它并尝试将其用作类的实例
import qualified Tree2
class YesNo a where
yesno :: a -> Bool
instance YesNo (Tree2.Tree a) where
yesno EmptyTree = False
yesno _ = True
但是当我在ghci中加载它时会出现此错误:
Not in scope: data constructor ‘EmptyTree’
Failed, modules loaded: Tree2.
任何人都知道为什么?
答案 0 :(得分:11)
首先,
module Tree2
(
Tree
) where
只导出Tree
数据类型,而不是其构造函数;你应该使用
module Tree2
(
Tree(..)
) where
代替。
其次,当您进行合格导入时,您需要使用Tree2.EmptyTree
而不是EmptyTree
。