这是模板Haskell的预期行为吗?

时间:2015-05-16 09:34:12

标签: haskell template-haskell lens

任何人都可以说明为什么这段代码没有编译

data A = A {
  _b  :: B
}
makeLenses ''A

type B = String

带有消息

Not in scope: type constructor or class B

这样做:

type B = String

data A = A {
  _b  :: B
}
makeLenses ''A

没有makeLenses,一切都很好。

为什么我不能在makeLenses之后输入synonim声明?

1 个答案:

答案 0 :(得分:8)

只有模板haskell调用之前的定义才能在范围内访问。

在同一主题上查看此前一个问题:Haskell: Template Haskell and the scope