Да;вам просто нужно использовать список импорта:
module Client where
import My (L)
ok :: L Int
ok = undefined
bad :: L Int
bad = Cons 3 Nil
bad2 :: L Int -> Int
bad2 (Cons i _) = i
bad2 Nil = 0
Если вы попытаетесь скомпилировать это, вы получите следующие четыре ошибки:
Client.hs:8:10: Not in scope: data constructor `Cons'
Client.hs:8:17: Not in scope: data constructor `Nil'
Client.hs:11:10: Not in scope: data constructor `Cons'
Client.hs:12:9: Not in scope: data constructor `Nil'
Если вы действительно хотите импортироватьконструкторы, вы вместо этого указали бы L(..)
или L(Cons)
для импорта Cons
, но не Nil
.
Для некоторых других способов использования оператора import
проверьте Статья на HaskellWiki import
(хотя в статье не упоминается импорт типов данных и их конструкторов).