【发布时间】:2011-12-03 01:58:10
【问题描述】:
Contol.Concurent.STM 库中的 check 函数具有 Bool -> STM a 类型并在成功时返回 undefined 而不是具有 Bool -> STM () 类型是否有充分的理由?它的实现方式类型检查器将编译一个以check foo 结尾的do 块,但在运行时以*** Exception: Prelude.undefined 失败。
【问题讨论】:
-
这是个好问题;似乎STM invariants paper 中描述的
check现在称为alwaysSucceeds。我不清楚当前的check做了什么。 -
是的,我不知道那样做的目的是什么。现在有点好奇。
-
check b = if b then return undefined else retry我声称它应该是check b = if b then return () else retry