繁体   English   中英

Haskell/GHC 7.10.1/Leksah:此警告的含义是什么:“名称...在源文件中找到但不在范围内”

[英]Haskell/GHC 7.10.1/Leksah : What is the meaning of this Warning: "name ... found in source file but was not in scope"

我正在使用 Leksah IDE 0.15.0.1,编译示例包时收到警告:“名称...在源文件中找到但不在范围内”。

这个警告是什么意思?

我用谷歌搜索了这段文字,但发现它很有启发性。

在此处输入图像描述

问题可能出在线条之内

testMain = do
    allPass <- $quickCheckAll
    unless allPass exitFailure

根据QuickCheck 文档,为了使用 quickCheckAll,执行$quickCheckAll的 IO 动作必须在其定义之前有return []

要使用 quickCheckAll,请在您的模块中添加一个定义,如下所示

return [] runTests = $quickCheckAll

然后执行 runTests。

所以将它应用到你的 testMain 定义中,它最终会是

return []
testMain = do
    allPass <- $quickCheckAll
    unless allPass exitFailure

该文档还提供了对这种需求的解释:

注意:上例中奇怪的return []是 GHC 7.8 及更高版本需要的; 没有它,quickCheckAll 将无法找到任何属性。 出于好奇, return []是一个模板 Haskell 拼接,它使 GHC 在程序中的该点插入空的声明列表; GHC 会在return []之前对模块的其余部分进行类型检查,这意味着稍后对 quickCheckAll 的调用可以看到return []之前定义的所有内容。 哎呀!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM