packages feed

unamb-0.1.2: wikipage.tw

[[Category:Packages]]
[[Category:Concurrency]]

== 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:
* Visit the [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/unamb Hackage page] for library documentation and to download & install.
* Or install with <tt>cabal install unamb</tt>.
* Get the code repository: <tt>darcs get http://code.haskell.org/unamb</tt>.
<!-- * See the [[unamb/Versions| version history]]. -->

Please leave comments at the [[Talk:unamb|Talk page]].

As of version 0.1.1, unamb requires ghc 6.10 or better.