我正在使用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的错误消息建议中的小错误并不是我感兴趣的.我想知道的是正确的方法是什么.我已经查阅了手册,我无法从它提供的进口解释中找出解决方案.