函数mkWeak
对于在Haskell中构建各种低级抽象非常有用。 (有关文档,请参阅here。)我不清楚当传递一个(键,值)对时行为是什么,其中值是未评估的thunk。它会在制作弱指针之前评估thunk,还是保持未评估状态。我确信有一些聪明的表达式我可以输入undefined
来解决这种或那种方式,但我想不出它是什么!
答案 0 :(得分:4)
请记住,如果给定底部作为参数,则strict函数必须返回bottom,因此您可以通过将undefined
作为参数来测试函数的严格性,并观察您是否得到异常。 / p>
快速实验表明mkWeak
的第二个参数并不严格。 (无论如何,我没有理由说明原因。)
Prelude System.Mem.Weak> mkWeak "foo" undefined Nothing
Prelude System.Mem.Weak>