mkWeak的值是否严格?

时间:2011-07-31 14:13:27

标签: haskell

函数mkWeak对于在Haskell中构建各种低级抽象非常有用。 (有关文档,请参阅here。)我不清楚当传递一个(键,值)对时行为是什么,其中值是未评估的thunk。它会在制作弱指针之前评估thunk,还是保持未评估状态。我确信有一些聪明的表达式我可以输入undefined来解决这种或那种方式,但我想不出它是什么!

1 个答案:

答案 0 :(得分:4)

请记住,如果给定底部作为参数,则strict函数必须返回bottom,因此您可以通过将undefined作为参数来测试函数的严格性,并观察您是否得到异常。 / p>

快速实验表明mkWeak的第二个参数并不严格。 (无论如何,我没有理由说明原因。)

Prelude System.Mem.Weak> mkWeak "foo" undefined Nothing
Prelude System.Mem.Weak>