不在 Haskell 范围内
Not in scope in Haskell
当我尝试从 http://michaeldadams.org/papers/scrap_your_zippers/ScrapYourZippers.hs 编译代码时,我得到:
ScrapYourZipper.hs:249:15: Not in scope: type variable ‘hole’
ScrapYourZipper.hs:251:27: Not in scope: type variable ‘root’
ScrapYourZipper.hs:252:20: Not in scope: type variable ‘hole’
ScrapYourZipper.hs:252:25: Not in scope: type variable ‘root’
发生这种情况的代码部分:
245 data Context hole root where
246 CtxtNull :: Context a a
247 CtxtCons ::
248 forall rights parent. (Data parent) =>
249 Left (hole -> rights)
250 -> Right rights parent
251 -> Context parent root
252 -> Context hole root
有什么ideas/pointers有什么问题吗?
PS:抱歉帖子命名不当,想不出任何有意义的东西。
我将该数据声明替换为:
data Context hole root where
CtxtNull :: Context a a
CtxtCons :: (Data parent) => Left (hole -> rights) -> Right rights parent -> Context parent root -> Context hole root
(即只删除 forall
子句)并编译。
第 248 行应该是
forall rights parent root hole. (Data parent) =>
有可能 GHC 在旧版本中更宽松...
当我尝试从 http://michaeldadams.org/papers/scrap_your_zippers/ScrapYourZippers.hs 编译代码时,我得到:
ScrapYourZipper.hs:249:15: Not in scope: type variable ‘hole’
ScrapYourZipper.hs:251:27: Not in scope: type variable ‘root’
ScrapYourZipper.hs:252:20: Not in scope: type variable ‘hole’
ScrapYourZipper.hs:252:25: Not in scope: type variable ‘root’
发生这种情况的代码部分:
245 data Context hole root where
246 CtxtNull :: Context a a
247 CtxtCons ::
248 forall rights parent. (Data parent) =>
249 Left (hole -> rights)
250 -> Right rights parent
251 -> Context parent root
252 -> Context hole root
有什么ideas/pointers有什么问题吗?
PS:抱歉帖子命名不当,想不出任何有意义的东西。
我将该数据声明替换为:
data Context hole root where
CtxtNull :: Context a a
CtxtCons :: (Data parent) => Left (hole -> rights) -> Right rights parent -> Context parent root -> Context hole root
(即只删除 forall
子句)并编译。
第 248 行应该是
forall rights parent root hole. (Data parent) =>
有可能 GHC 在旧版本中更宽松...