Index of values


(>>) [Stm]
t1 >> t2 is equal to t1 >>= fun _ -> t2 which first execute t1 and wait for its result but ignore it, and then behaviors like t2
(>>=) [Stm]
t >>= f is an alternative notation of bind t f

A
abort [Stm]
abort is a single transaction, when executed, abort the whole execution from current point.
atom [Stm]
This is an analog of atomically in Haskell, which repeatedly execute a transaction until the committing succeed.
atom_once [Stm]
atom_once execute a transaction and result in Some v if the transaction success and None if the transaction fail (due to conflicting in committing or abort).

B
bind [Stm]
bind t f is a transaction, when executed, first behavior as transaction t, then feed the reture value to f to get the consecutive transaction to execute next.

C
catch [Stm]
catch t f is a transaction, when executed, behaviors as t if no exception arise, otherwise f is used to catch this exception and produce the replacing transaction to execute.
create [Cothread]

D
delay [Cothread]

E
exit [Cothread]

I
id [Cothread]

J
join [Cothread]

K
kill [Cothread]

N
new_tvar [Stm]
We provide two functions to create a transactional variable from common value: tvar is traditional toplevel declaration as those new* and create* functions seen in most other library, it is ensured to succeed; while new_tvar is a transactional declaration (as in Haskell) which may fail if the execution of the whole transaction it's bound in fails.

O
or_else [Stm]
or_else t1 t2 is a transaction, when executed, first try to execute t1.

R
read_tvar [Stm]
Read value from a transactional variable, results in a transaction which can be further composed with other transactions through bind etc., or executed right away with atom etc.
retry [Stm]
retry is a transaction, when executed, first wait for the changing of any transactional variables being read in the history of current execution, then relaunch the whole execution.
retry_now [Stm]
retry_now is a transaction in the same spirit with retry, the only difference is that it does not wait for any changes and relaunch the execution immediately.
return [Stm]
Primitive to wrap a plain of type 'a value to a 'a stm, which when being executed, will produces the orignal value.

S
select [Cothread]
self [Cothread]
spawn [Cothread]
spawn f x launch up the computation of (f x) in a separate thread right away, the result is return as a event which you can sync with.
spawnl [Cothread]
spawnl f x returns a event represents the computation of (f x) as a separate thread, just like spwan.

T
tvar [Stm]
Toplevel tvar declaration, produce a transaction variable from a value.

W
wait [Stm]
wait is a transaction, when executed, simply wait for the changing of any transactional variables being read in the history of current execution, but without relaunch it.
wait_pid [Cothread]
wait_read [Cothread]
wait_signal [Cothread]
wait_timed_read [Cothread]
wait_timed_write [Cothread]
wait_write [Cothread]
write_tvar [Stm]
write_tvar tv v write value v to transactional variable tv, results in a transaction whose type is unit.

Y
yield [Cothread]