2012-04-11 22 views
11

Phần "khác" của orElse được gọi là khi giao dịch được thử lại do một giao dịch khác viết cho TVar nó đã đọc hoặc chỉ khi được gọi là retry?Haskell: TVar: orElse

Trả lời

10

Nếu bạn có

OrElse a b

sau đó b chỉ chạy nếu retry được gọi một cách rõ ràng trong a. Nếu không, orElse về bản chất sẽ trở thành không xác định. (Việc chạy lại các giao dịch được thực hiện bởi thời gian chạy STM là minh bạch và không ảnh hưởng đến kết quả của bất kỳ phép tính nào.)