导入关联数据类型的数据构造函数

时间:2015-12-28 22:08:17

标签: haskell ghc

我正在使用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,我无法从其提供的进口解释中找出解决方案。

0 个答案:

没有答案