unamb is a package containing the unambiguous choice operator
unamb, which wraps thread racing up in a purely functional, semantically simple wrapper. Given any two arguments
v that agree unless bottom, the value of
unamb u v is the more terminating of
v. Operationally, the value of
unamb u v becomes available when the earlier of
v does. The agreement precondition ensures unamb's referential transparency. For more info about
unamb and its use, see the paper Simply Efficient Functional Reactivity, sections 10 and 11.
unamb was originally a part of Reactive. I moved it to its own package in order to encourage experimentation.
Besides this wiki page, here are more ways to find out about unamb:
- Read the library documentation.
- Get the code repository: darcs get http://code.haskell.org/unamb.
- Install from Hackage.
- See the version history.
Please leave comments at the Talk page.