Импортирующий модуль haskell говорит "не в области видимости"
Я создал древовидную структуру в файле с именем Tree2.hs
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.
Кто-нибудь знает почему?
1 ответ
Решение
Первый,
module Tree2
(
Tree
) where
только экспортирует Tree
тип данных, а не его конструкторы; ты должен использовать
module Tree2
(
Tree(..)
) where
вместо.
Во-вторых, когда вы делаете качественный импорт, вам нужно использовать Tree2.EmptyTree
вместо просто EmptyTree
,