在我问了What happens to you if you break the monad laws?一段时间后,我在Haskell Wiki上一个关于Safely running untrusted haskell code的页面上偶然发现了这个未解释的短语
“创建违反假定法则的类实例(参见EvilIx)”
作为可能攻击lambdabot的一个例子。
因为lambdabot使用GHC,所以这可能是GHC的一个bug (或特性),它对类法进行了假设。有人记得这些是什么吗?这种情况曾经(或可能)以酸性方式发生过吗?
(在谷歌上搜索"haskell +Evillx“没有结果)。
发布于 2012-02-05 04:27:04
数组使用Ix来管理边界。他们相信Ix做到了它所说的。如果没有,您可以欺骗数组机制访问不属于它们的内存位置。
cf EvilIx:http://www.haskell.org/pipermail/haskell-cafe/2006-December/019994.html
发布于 2011-08-07 23:35:33
如果我们将monad视为建模副作用,则声称是monad但不遵守法律的类型可能会导致效果以错误的顺序或错误的次数发生。
一个典型的例子是ListT,list monad转换器。最初的实现并不满足单元律。"ListT Done Right维基页面在名为"Examples“的部分中有一些简单的ListT用法示例。您可以看到当您使用违反法律的原始实现运行这些程序时,和使用符合法律的替代程序运行它们时,这些程序的不同之处。
https://stackoverflow.com/questions/6970383
复制相似问题