我正在使用GHC 7.10.2。 RenderRoute
中有一个名为yesod
的类型类,如下所示:
class Eq (Route a) => RenderRoute a where
data Route a
renderRoute :: Route a -> ([Text], [(Text, Text)])
我在名为Yesod.Crud
的模块中编写了一个实例,如下所示:
data Crud master p c = Crud { ... }
instance (PathPiece (Key c), Eq (Key c), PathPiece p, Eq p) => RenderRoute (Crud master p c) where
data Route (Crud master p c)
= EditR (Key c)
| DeleteR (Key c)
| IndexR p
| AddR p
| ViewR (Key c)
如果,在其他地方,我会像这样导入所有内容
import Yesod.Crud
然后属于我的关联数据类型的五个数据构造函数在范围内。我试图找出如何以更严格的方式编写import语句。假设我只想将ViewR
纳入范围(也可能是数据类型Crud
)。如果我试试
import Yesod.Crud (ViewR)
然后GHC错误如下:
src/Import/Base.hs:9:55:
In module ‘Yesod.Crud’:
‘ViewR’ is a data constructor of ‘Route’
To import it use
‘import’ Yesod.Crud( Route( ViewR ) )
or
‘import’ Yesod.Crud( Route(..) )
如果我尝试第一个建议,则错误
src/Import/Base.hs:10:46:
Module ‘Yesod.Crud’ does not export ‘Route(ViewR)’
第二个也错了。但是,GHC的错误消息建议中的小错误并不是我感兴趣的。我想知道的是正确的方法是什么。我已经咨询了the manual,我无法从其提供的进口解释中找出解决方案。