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

WWW: http://haskell.org/haskellwiki/unamb