unamb-0.0: wikipage.tw
[[Category:Packages]]
== Abstract ==
'''unamb''' is a package containing the ''unambiguous choice'' operator <hask>unamb</hask>, which wraps thread racing up in a purely functional, semantically simple wrapper. Given any two arguments <hask>u</hask> and <hask>v</hask> that agree unless bottom, the value of <hask>unamb u v</hask> is the more terminating of <hask>u</hask> and <hask>v</hask>. Operationally, the value of <hask>unamb u v</hask> becomes available when the earlier of <hask>u</hask> and <hask>v</hask> does. The agreement precondition ensures unamb's referential transparency. For more info about <hask>unamb</hask> and its use, see the paper ''[http://conal.net/papers/simply-reactive/ Simply Efficient Functional Reactivity]'', sections 10 and 11.
<hask>unamb</hask> 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 [http://code.haskell.org/unamb/doc/html/ the library documentation].
* Get the code repository: '''<tt>darcs get http://code.haskell.org/unamb</tt>'''.
* Install from [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/unamb Hackage].
* See the [[unamb/Versions| version history]].
Please leave comments at the [[Talk:unamb|Talk page]].