在Haskell(GHC)中快速检查令人讨厌的外部函数

ale*_*tor 24 haskell ghc quickcheck memory-safety

我想用Haskell的quickcheck库测试一些C代码.最简单的方法似乎是 foreign import在最终的haskell函数之上编写一个属性.这样做的问题是,如果C代码导致段错误或设法破坏内存,我的测试要么在没有输出的情况下崩溃,要么做一些完全不可预测的事情.

第二种方法是在C位上创建简单的可执行包装器,并在测试过程之外执行它们System.Process.不用说,这样做需要大量的脚手架和序列化值,但另一方面,它可以处理段错误.

有没有办法让foreign import战略像运行外部流程一样安全?

Joa*_*ner 1

您可以在当前进程中实现包装器,然后System.Posix.Process.forkProcess在其自己的进程中安全地运行,使用 Haskell 实现必要的通信。