[英]Leksah 0.15.0.1, GHC 7.10.1 : Is it possible to pass user input to a Haskell program which is launched inside Leksah Haskell IDE? If yes, how?
[英]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.