Difference between revisions of "Unamb"
m (find out about) |
|||
Line 8: | Line 8: | ||
Besides this wiki page, here are more ways to find out about unamb: |
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]]. |
+ | <!-- * See the [[unamb/Versions| version history]]. --> |
Please leave comments at the [[Talk:unamb|Talk page]]. |
Please leave comments at the [[Talk:unamb|Talk page]]. |
Revision as of 19:10, 11 November 2008
Abstract
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 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. 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:
- Visit the Hackage page for library documentation and to download & install.
- Or install with cabal install unamb.
- Get the code repository: darcs get http://code.haskell.org/unamb.
Please leave comments at the Talk page.