The unamb package

unamb contains the unambiguous choice operator unamb, which
wraps thread racing up in a purely functional, semantically simple
wrapper. Originally a part of Reactive, I moved unamb to its own
package in order to encourage experimentation.

Downloads

Maintainers' corner

Readme for unamb-0.1.3

unamb [1] contains the "unambiguous choice" operator "unamb" [2], which
wraps thread racing up in a purely functional, semantically simple
wrapper. Given any two arguments u and v that agree unless bottom, the
value of unamb u v is the more terminating of u and v. Operationally, the
value of unamb u v becomes available when the earlier of u and v does.
The agreement precondition ensures unamb's referential transparency.
unamb was originally a part of Reactive [3]. I moved it to its own
package in order to encourage experimentation.
Please share any comments & suggestions on the discussion (talk) page at
[1].
You can configure, build, and install all in the usual way with Cabal
commands.
runhaskell Setup.lhs configure
runhaskell Setup.lhs build
runhaskell Setup.lhs install
References:
[1] http://haskell.org/haskellwiki/unamb
[2] http://conal.net/papers/simply-reactive
[3] http://haskell.org/haskellwiki/reactive