úÎ*ä(      ,3The blocking transaction arrow. The semantics are / identical to the equivalent operations on the  monadic interface.  The blocking transaction monad. LAn opaque value. It can be modified and combined with other opaque values,  but not observed. The type variable e4 binds the value to the monadic context in which it # occurs, (this is identical to the runST existential type trick). 2State during the progress of a black transaction. 8Set to true if the user decides to retry a transaction.  Initially this value is false. 7Set to indicate conditional sections. When false, all  writes are supressed. An untyped BVar. 9A transactional variable with a blocking implementation. (The unique value for ordering purposes.  The mutex. ! User data. "ESingle-use modification listeners. Whenever a variable is modified, 2 these will all be written to and then discarded. #(Construct a new transactional variable. 2Observe the contents of a transactional variable. +One-off write to a transactional variable. 4Perform a transaction using only a single variable. $<Unsafe: get the result of a transaction without running it.  (Doesn'9t preserve type system properties of BTM, and any values ( returned will be internall undefined.) %(Unsafe: get the transactional behavior.  (Doesn'+t preserve type system properties of BTM.) &,Construct the working set of a transaction. 'DFlow control. Skip the critical section if the predicate is false. CFlow control. Skip the critical section if the predicate is true. (<Flow control for the BTM monad. If the predicate is false, = then all writes during the critical section are suppressed. : Since reads always happen, the return value is available  even in a suppressed branch. Write to a variable. Read from a variable. <Electively retry. This will restore all variables to their = state before the transaction began, and listen for a change 6 to any variable in the working set before trying the  transaction again. Commit a blocking transaction. )7Run a blocking transaction without type system tricks. *FAcquire locks on the working set: returns an operation to restore the = working set to its initial state. The restoration function 9 requires a retry signal, and a value indicating whether = or not the user elected to retry. (If that value is false, 1 the entire restoration function is suppressed.) +"Release locks on the working set. As  . As  . As  .     ,      !"#$%&'()blocking-transactions-0.1.0.4)BlockingTransactions.BlockingTransactionsBTABTMValueBVarnewBVarpeekBVarpokeBVar modifyBVarwhenunless writeBVarreadBVarretryrunBTMrunBTA storeBVar fetchBVar retryWhen retryUnlessBTReturn fromValueBlockingStatus should_retryis_active_branch AnonymousVarAnon bvar_index bvar_lock bvar_databvar_retry_list unique_source staticResult operation workingSet invalid_valueswitchrunBlockingTransaction openVariablescloseVariables