小编War*_*rbo的帖子

如果达到内存限制,则中止评估Haskell表达式

我正在使用QuickCheck来测试自动生成的属性(类似于QuickSpec),但是我遇到的一个常见问题是耗尽内存,这可能是由于幼稚的递归生成器或非常大的函数输出(例如,一个失败是由指数引起的) Peano数的函数,会生成巨大的嵌套结构)。

我想知道是否有一种方法可以放弃评估(如果达到)(驻留)内存限制。似乎我们可以为超时执行此操作,但是内存似乎比较棘手。这样,如果我们使用过多的内存,则可以放弃该测试(就像==>先决条件失败了一样)。

通过查看weigh包的来源,我可以看到如何衡量整个程序的内存使用情况。这是可行的,但针对一个特定的表达式(也许通过获取一个线程使用的内存或其他东西)来衡量它会更好(更健壮)。

就我的目的而言,将表达式完全标准化就足够了,因为我不必担心递归结构(我可以将其应用于测试结果,实际上是布尔值)。

memory haskell timeout quickcheck

12
推荐指数
0
解决办法
128
查看次数

全局禁用 sbt supershell

这个问题类似,我想阻止 sbt 用消息和空行向 shell 发送垃圾邮件。如果我使用 option 运行 sbt,它会停止sbt -Dsbt.supershell=false,但我想通过 dotfile in~/.sbt或类似的文件在全局范围内禁用它。我可以用sbt总是添加此选项的包装器替换二进制文件,但这似乎不雅。

我已经在一个名为~/.sbt/1.0/global.sbtand的文件中尝试了以下每一个~/.sbt/1.3/global.sbt,但都没有效果:

sbt.supershell := false
useSuperShell := false
sbt.useSuperShell := false
useSuperShell := false
supershell := false
ThisBuild / useSuperShell := false
Run Code Online (Sandbox Code Playgroud)

作为我试图避免的一个例子,当我开始sbt一个我正在处理的项目时会发生以下情况(在编译、测试等过程中会散布类似数量的垃圾邮件):

$ sbt
[info] Loading settings for project global-plugins from metals.sbt ...
[info] Loading global plugins from /Users/chris/.sbt/1.0/plugins















  | => global-plugins / updateCacheName 0s





  | => global-plugins / updateCacheName 0s
  | => Global / …
Run Code Online (Sandbox Code Playgroud)

configuration command-line scala sbt

2
推荐指数
1
解决办法
365
查看次数